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;