64位Python调用32位Oracle客户端报错 cx_Oracle.DatabaseError: DPI-1047

问题

操作系统64为,Python64位,Oracle客户端32位。因为其他原因,不能将Oracle客户端改成64位,所以导致cx_Oracle64位无法使用,cx_Oracle32位无法安装。

原因

Windows环境下,如果安装的是64位Python,在使用cx_Oracle时,默认调用的是64位Oracle客户端,这时我们也只能安装cx_Oracle的-win_amd64位版。

解决方法:

1.先去安装与当前Python版本相匹配的cx_Oracle,我的是Python3.8。安装的版本为:cx_Oracle-8.3.0-cp38-cp38-win_amd64.whl

2.下载相关的Oracle instantclient(即时客户端),并解压到方便调用的文件夹

下载地址:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html

我下载的版本为:instantclient-basiclite-windows.x64-19.13.0.0.0dbru.zip,可以多试几次,总有一款适合你

3.解压instantclient,在python代码中,更改环境变量,以调整Oracle驱动位置。

我这边解压后的地址为:

E:\software\Python\instantclient-basiclite-windows.x64-19.13.0.0.0dbru

代码调整方式为

import os
os.environ['path'] =  r'E:\software\Python\instantclient-basiclite-windows.x64-19.13.0.0.0dbru\instantclient_19_13'

import cx_Oracle

现在cx_Oracle就可以正常调用了

 

posted @ 2021-12-29 14:36  Snom  阅读(1280)  评论(0编辑  收藏  举报