python 连接oracle 各种问题记录

1.一般的连接方法

即通过cx_Oracle包来实现
安装方法

pip install cx_Oracle

pyhton 连接代码

import cx_Oracle

print("cx_Oracle.version:", cx_Oracle.version)
host = "数据库ip"
port = "1521"
service_name = "pdb01"
# dsn = cx_Oracle.makedsn(host, port, sid)
# 通过servername的方式连接
dsn =  cx_Oracle.makedsn(host,port, service_name=service_name)
print(dsn)
connection = cx_Oracle.connect("oracle用户名", "oracle密码", dsn)
cursor = cx_Oracle.Cursor(connection)  # 返回连接的游标对象
cursor.execute("select * from ac01 where aac003='whosyourdaddy") 
result = cursor.fetchall()
print (result)

通常,你要是顺利的话,那么就可以读取到数据了。但是,请看下面

问题记录

oracle 客户端问题

这里错误的原因各种各样,只记录成功的方法
即要保证(pyhton cx_Oracle oracleclient )3个都必须是64位的。

当然也可以都32位 但是我没尝试过

cx_Oracle.DatabaseError: DPI-1047

这里问题有两个

1.cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: “The specified module could not be found”.
2.x_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "C:\Program Files\python\oci.dll is not the correct architecture"

这里的错误意思是 不能加载64位的oracle 客户端库,也就是你oracle的客户端弄错了。换成64位即可
并且要把客户端的dll ,copy一份到python.exe对应的目录
我这里用的是instantclient_11_2。那就把目录下的所有dll copy 到python目录
image
image

cx_Oracle.DatabaseError: DPI-1072: the Oracle Client library version is unsupported

但你完成上面的修改后,可能还会遇到这个 1072的问题。
这个问题的解决办法就是更换 instantclient 的版本。 我之前用instantclient21的时候就报这个错。
换成instantclient11之后 就成功了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何浩翔

如果对你多帮助,请支持。感谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值