首页 > 解决方案 > cx_Oracle 连接失败,出现“DPI-1047:找不到 64 位 Oracle 客户端库”

问题描述

使用连接 oracle 到 python 源的问题,oracle 现在可以用于其他语言 php (oci)

错误:

Traceback (most recent call last):
  File "c:\xampp\htdocs\pyoracle\testConnectionOracle.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()

标签: pythonwindowsoraclecx-oracle

解决方案


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

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

cx_Oracle.init_oracle_client(lib_dir=r"C:\oracle\instantclient_19_6")

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

PHP 可能是 32 位并使用 32 位 Oracle 库。如果是这样,因为您有 64 位 Python,那么您将需要安装 64 位 Instant Client 或安装 32 位 Python。(注意 PHP OCI8 没有对init_oracle_client().


推荐阅读