python 連線oracle 各種問題記錄
阿新 • • 發佈:2022-03-11
1.一般的連線方法
即通過cx_Oracle包來實現
安裝方法
pip install cx_Oracle
pyhton 連線程式碼
import cx_Oracle print("cx_Oracle.version:", cx_Oracle.version) host = "資料庫ip" port = "1521" service_name = "pdb01" # dsn = cx_Oracle.makedsn(host, port, sid) # 通過servername的方式連線 dsn = cx_Oracle.makedsn(host,port, service_name=service_name) print(dsn) connection = cx_Oracle.connect("oracle使用者名稱", "oracle密碼", dsn) cursor = cx_Oracle.Cursor(connection) # 返回連線的遊標物件 cursor.execute("select * from ac01 where aac003='whosyourdaddy") result = cursor.fetchall() print (result)
通常,你要是順利的話,那麼就可以讀取到資料了。但是,請看下面
問題記錄
oracle 客戶端問題
這裡錯誤的原因各種各樣,只記錄成功的方法
即要保證(pyhton cx_Oracle oracleclient )3個都必須是64位的。
當然也可以都32位 但是我沒嘗試過
cx_Oracle.DatabaseError: DPI-1047
這裡問題有兩個
1.cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified module could not be found".
2.x_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "C:\Program Files\python\oci.dll is not the correct architecture"
這裡的錯誤意思是 不能載入64位的oracle 客戶端庫,也就是你oracle的客戶端弄錯了。換成64位即可
並且要把客戶端的dll ,copy一份到python.exe對應的目錄
我這裡用的是instantclient_11_2。那就把目錄下的所有dll copy 到python目錄
cx_Oracle.DatabaseError: DPI-1072: the Oracle Client library version is unsupported
但你完成上面的修改後,可能還會遇到這個 1072的問題。
這個問題的解決辦法就是更換 instantclient 的版本。 我之前用instantclient21的時候就報這個錯。
換成instantclient11之後 就成功了