如何通过Anaconda Python连接32位Oracle?是否需改用64位?
Anaconda Python连接32位Oracle的问题解决
核心疑问解答
- 不需要必须使用64位Oracle,但Python环境(Anaconda)与Oracle客户端的位数必须完全匹配:64位Anaconda对应64位Oracle客户端,32位Anaconda对应32位Oracle客户端,位数不匹配是你当前报错的主要原因。
错误信息翻译
InterfaceError: ('IM003', "[IM003] 指定的驱动程序未能加载,系统错误1114: 动态链接库(DLL)初始化例程失败。(Oracle dans OraClient12Home1, C:\Progra~1\ORA12\product\12.1.0\client_1\BIN\SQORA32.DLL). (160) (SQLDriverConnect)")
错误原因
- Anaconda Python位数与Oracle客户端位数不匹配(比如64位Python调用32位Oracle驱动DLL)
- Oracle客户端安装不完整,缺失依赖DLL
- ODBC驱动配置错误或名称不匹配
修复步骤
确认Anaconda位数
打开Anaconda Prompt,执行以下命令:python -c "import sys; print(sys.maxsize > 2**32)"返回
True为64位,False为32位。安装对应位数的Oracle客户端
- 若Anaconda是64位:卸载现有32位Oracle客户端,安装64位Oracle Instant Client或完整客户端
- 若Anaconda是32位:确保安装的是32位Oracle客户端,且安装路径无中文或特殊字符
配置对应位数的ODBC数据源
- 64位系统打开64位ODBC管理器:
C:\Windows\System32\odbcad32.exe - 32位系统或32位Python打开32位ODBC管理器:
C:\Windows\SysWOW64\odbcad32.exe - 创建Oracle ODBC数据源,记录驱动名称(比如
{Oracle in OraClient12Home1})
- 64位系统打开64位ODBC管理器:
修正代码中的连接字符串
修复拼写错误(如Microdsoft应为Microsoft)、换行问题,确保驱动名称与ODBC配置一致:import pyodbc # 驱动名称需与ODBC管理器中显示的完全一致 connectString = 'Driver={Oracle in OraClient12Home1};Server=xx_xx_xx.server.lan:1521/xx_xx_xx.xx_xx_xx.server.lan;uid=xx;pwd=xx' cnxn = pyodbc.connect(connectString) cursor = cnxn.cursor() cursor.execute("SELECT DAVANCE.CD FROM DAVANCE") for row in cursor.fetchall(): print(row)
内容的提问来源于stack exchange,提问作者VBA_Anne_Marie
相关产品推荐
相关产品推荐

