cx_Oracle连接失败,'DPI-1047:找不到64位Oracle客户端库'



使用连接oracle到python源代码的问题,oracle现在可以工作到其他语言php(oci(

错误:

Traceback (most recent call last):
File "c:xampphtdocspyoracletestConnectionOracle.py", line 4, in <module>
conn = cx_Oracle.connect('xxx','xxx', dsn_tns,'UTF-8')
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "failed to get message for Windows Error 126". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help

代码:

import cx_Oracle
dsn_tns = cx_Oracle.makedsn('192.168.1.217', '1521', service_name='xx') 
conn = cx_Oracle.connect('xx','xx', dsn_tns,'UTF-8')
c = conn.cursor()
c.execute('select * from database.table')
for row in c:
print (row[0], '-', row[1])
conn.close()

更新:尝试最新版本的cx_Oracle,请参阅发布公告。此版本(已重命名为python-oracledb(不需要即时客户端,因此安装更容易。

以下是cx_Oracle Windows安装说明,您可能从您引用的错误消息中找到了这些说明。

我假设(I(您实际上拥有64位Oracle客户端库11g或更高版本,并且(ii(具有安装说明中提到的所需VS Redistributable。然后一个简单的尝试就是将其添加到脚本的顶部:

cx_Oracle.init_oracle_client(lib_dir=r"C:oracleinstantclient_19_6")

使用客户端库的实际路径。

PHP可能是32位的,并且使用32位的Oracle库。如果是这样,因为您有一个64位Python,那么您将需要安装64位Instant Client或安装32位Python。(请注意,PHP OCI8没有对init_oracle_client()的等效调用。在PHP中,在PHP进程开始之前,您需要确保Oracle客户端库位于系统搜索路径中,例如path。(

最新更新