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;

posted @   HinaJin  阅读(397)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示