You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无cx_oracle时Python连接Oracle数据库遇pyodbc报错求助

解决pyodbc连接Oracle时的IM002错误

1. 修正驱动名称匹配问题

你安装的驱动是Oracle in OraClient18Home1_32bit,但代码中DRIVER字段写的是Oracle in OraClient18Home1,名称不匹配会导致ODBC管理器找不到驱动。

  • 打开对应位数的ODBC数据源管理器:
    • 64位系统下,运行C:\Windows\SysWOW64\odbcad32.exe打开32位ODBC管理器;32位系统直接在控制面板找「ODBC数据源」。
    • 切换到「驱动程序」标签,复制Oracle驱动的准确名称(比如你安装的应该是Oracle in OraClient18Home1_32bit)。
  • 修改连接字符串:
    import pyodbc
    cnxn = pyodbc.connect('DRIVER={Oracle in OraClient18Home1_32bit};DBQ=sinarrtou01-sc.sg.xx.com:1700/SGART4U_app.sg.xx.com;UID=DASKUMA;PWD=######')
    cursor = cnxn.cursor()
    

2. 检查Python与驱动的位数兼容性

ODBC驱动和Python的位数必须一致,否则会出现驱动无法识别的问题:

  • 在Jupyter中运行以下代码查看Python位数:
    import sys
    print(sys.maxsize > 2**32)  # 输出True为64位,False为32位
    
  • 如果Python位数和驱动(32位)不匹配,要么安装对应位数的Oracle Client驱动,要么切换到对应位数的Python环境。

3. 验证DBQ参数格式或改用TNS名称

DBQ参数格式错误也可能引发连接失败,可尝试两种方式:

  • 确认DBQ格式正确:格式应为主机名:端口/服务名,你的现有格式是正确的,可直接保留。
  • 改用TNS名称连接:
    1. 找到Oracle Client安装目录下的tnsnames.ora(通常在OraClient18Home1_32bit\network\admin),添加如下配置:
      SGART4U =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = sinarrtou01-sc.sg.xx.com)(PORT = 1700))
          (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = SGART4U_app.sg.xx.com)
          )
        )
      
    2. 修改连接字符串:
      cnxn = pyodbc.connect('DRIVER={Oracle in OraClient18Home1_32bit};DBQ=SGART4U;UID=DASKUMA;PWD=######')
      

4. 测试驱动的可用性

通过ODBC数据源管理器创建测试数据源,验证驱动是否正常:

  • 打开对应位数的ODBC管理器,切换到「用户DSN」或「系统DSN」,点击「添加」。
  • 选择你的Oracle驱动,填入主机、端口、服务名、用户名和密码,测试连接。如果测试失败,说明驱动安装不完整,需重新安装Oracle Client并确保勾选ODBC组件。

内容的提问来源于stack exchange,提问作者dskmrjt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 03:11:15