1. 程式人生 > 其它 >python 連線 oracle cx_Oracle.DatabaseError: DPI-1047

python 連線 oracle cx_Oracle.DatabaseError: DPI-1047

pip install cx_oracle

import cx_Oracle

# 設定
dsn = cx_Oracle.makedsn("ip", port, "主機")
# 連線
conn = cx_Oracle.connect("username","password",dsn)

# conn = cx_Oracle.connect("username/password@ip:port/主機")

curs = conn.cursor()
sql = 'select * from dual'
rr = curs.execute (sql)

row = curs.fetchone()
print(row[0])

# 關閉
curs.close()
conn.close()


報錯:
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "C:\oracle\product\10.2.0\client_2\bin\oci.dll is not the correct architecture". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help

oracle 客戶端安裝:
1.修改 Oracle客戶端\win64_11gR2_client\client\stage\cvu 下 cvu_prereq.xml 和 oracle.client_InstantClient.xml :
在標籤<CERTIFIED_SYSTEMS> 中增加以下內容,注意 64位MAX_LENGTH="5119", 32 位 MAX_LENGTH="1023"
<OPERATING_SYSTEM RELEASE="6.2">
<VERSION VALUE="3"/>
<ARCHITECTURE VALUE="64-bit"/>
<NAME VALUE="Windows 10"/>
<ENV_VAR_LIST>
<ENV_VAR NAME="PATH" MAX_LENGTH="5119" />
</ENV_VAR_LIST>
</OPERATING_SYSTEM>

2.嘗試 Oracle客戶端\win64_11gR2_client\client\setup.exe 安裝;

環境檢查失敗則:
1.以管理員方式執行命令列工具,通過DOS命令 net share c$=c: 檢視預設共享情況是否正常;
2.嘗試 Oracle客戶端\win64_11gR2_client\client\setup.exe 安裝;

若仍失敗,則:
1.執行 regedit -> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters 選中Parameters,在右邊名稱中找到AutoShareWks 項,在其右鍵選單中 ,點選修改,將其“數值資料(V):”由原來的0改為1,然後點選確定。
2.重啟系統;
3.嘗試 Oracle客戶端\win64_11gR2_client\client\setup.exe 安裝;

安裝成功後,需要將登錄檔中的 AutoShareWks 項 值改回 0;