【解决方案】cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library

本贴最后更新于 900 天前,其中的信息可能已经沧海桑田

可能原因:

  1. python版本和Oracle客户端instanceclient版本不对应;
  2. 缺少对应客户端instanceclient。

解决方案:

  1. 确认本地是否有可用的instanceclient,没有继续步骤2,有的话跳转步骤3
  2. 下载instanceclient(下载地址:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html#license-lightbox)
  3. 找到图中的三个文件(我本地有instanceclient,直接找到就可以,没有的话下载成功需要解压一下)image.png
  4. 将这3个文件复制到python根目录Lib\site-packages文件夹下,或者Anaconda同级的根目录中,重启软件,执行代码
  5. 步骤4若执行不成功,就把刚才解压的instantclient_19_9路径配置到环境变量中
用户变量新建TNS_ADMIN:D:\packages\instantclient_19_9

系统变量Path追加:D:\packages\instantclient_19_9

附cx_Oracle调用代码:

#创建连接cx_Oracle.connect(user="hr", password="welcome",dsn="localhost/orclpdb1")
ora_database = cx_Oracle.connect(user=Ora_message["user_name"], password=Ora_message["password"],
                                 dsn=Ora_message["dsn"]) 
#创建游标
ora_cur = ora_database.cursor()

#执行sql
ora_cur.execute('select * from cust_shop_info where cust_id = \'%xxx%\'')

#获取第一条结果
ora_cur.fetchone()

#关闭游标
ora_cur.close()

#关闭连接
ora_database.close()
回帖
请输入回帖内容 ...