python - 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()
解决方案
以下是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()
.
推荐阅读
- node.js - TypeError: sequelize.transaction 不是函数
- rust - `?` 无法将错误转换为 `std::io::Error`
- c# - 如何使用数据创建动态 div
- python - 如何在迭代器中加载和关闭 numpy 文件
- python - 使用 python 生成器访问 json 对象
- safari - 通过 Javascript 在 Safari 中读取 EXT-X-PROGRAM-DATE-TIME 以获取 HLS 流
- python - 字典验证 - 程序首先输入可能是错误的
- xquery - 编译时错误:找到“$”而不是“}”
- javascript - 如何根据键值选择对象 - VueJS
- javascript - 来自 JS SPA 的公共 OAuth