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

pyodbc无法连接DSN:驱动与应用架构不匹配问题求助

解决pyodbc连接DSN时的架构不匹配错误(IM014)

这个错误的核心原因很明确:你的Python运行环境(32位/64位)和你配置的ODBC DSN所使用的驱动架构不匹配。哪怕你在ODBC管理器里测试连接成功,那是因为测试用的是对应架构的管理器,但Python环境和驱动架构不一致时,就会触发这个IM014错误。

一步步排查和解决:

  1. 先确认你的Python是32位还是64位
    打开Python终端,运行这段代码:

    import sys
    print(sys.maxsize > 2**32)  # 输出True就是64位,False是32位
    
  2. 确认DSN使用的驱动架构
    注意Windows系统有两个ODBC数据源管理器,对应不同架构:

    • 64位管理器:C:\Windows\System32\odbcad32.exe
    • 32位管理器:C:\Windows\SysWOW64\odbcad32.exe
      打开和你Python架构对应的管理器,找到你的FootNet DSN,查看它关联的数据库驱动是32位还是64位——如果这里的驱动架构和Python不一致,就是问题所在。
  3. 调整架构匹配
    有两种方式解决:

    • 方式一:更换Python版本,安装和驱动架构一致的Python(比如驱动是32位,就装32位Python)
    • 方式二:重新配置DSN,在对应架构的ODBC管理器里,使用和Python架构匹配的数据库驱动来创建新的DSN

给你的代码提个小建议:

尽量不要用无差别的except:捕获所有异常,改成捕获具体的pyodbc.Error,这样能避免误捕获其他无关异常,也能更清晰地看到错误信息:

import pyodbc
import time

def connectToDB(): 
    connection = None 
    while connection is None: 
        try: 
            connection = pyodbc.connect(r'DSN=FootNet;UID=root;PWD=password')
            print("[DB connector] Connected successfully!")
        except pyodbc.Error as e:
            print(f"[DB connector] Error connecting to database: {e}. Trying again in 1 sec.")
            time.sleep(1) 
    return connection 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:23:37