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

已安装ODBC驱动并创建用户DSN,pyodbc.dataSources()返回空字典怎么办?

解决pyodbc无法列出用户DSN的问题

遇到pyodbc.dataSources()返回空字典但你明明已经创建了用户DSN的情况,大概率是位数不匹配或者环境配置问题,下面是一步步的排查和解决方法:

1. 先确认Python的位数

首先搞清楚你的Python是32位还是64位,运行这段代码就能知道:

import sys
print("64-bit Python" if sys.maxsize > 2**32 else "32-bit Python")

2. 匹配对应的ODBC数据源管理器

ODBC数据源管理器分32位和64位两个独立版本,Python只能识别对应位数管理器里创建的DSN:

  • 如果是64位Python:打开C:\Windows\System32\odbcad32.exe,检查这里的用户DSN列表,确保你创建的DSN在里面
  • 如果是32位Python:打开C:\Windows\SysWOW64\odbcad32.exe,如果之前的DSN是在64位管理器里建的,就重新在这里创建一遍用户DSN

3. 跳过列表直接尝试连接DSN

有时候dataSources()可能因为系统配置的小问题无法列出所有DSN,但这不代表DSN不能用。你可以直接尝试用DSN名称连接测试:

import pyodbc
try:
    # 替换成你的DSN名称、用户名和密码(如果你的DSN需要验证)
    conn = pyodbc.connect('DSN=YourDSNName;UID=your_username;PWD=your_password')
    print("连接成功!DSN是有效的")
    conn.close()
except Exception as e:
    print(f"连接失败,错误信息:{str(e)}")

如果连接成功,说明DSN没问题,后续直接用这个连接字符串操作数据库就行。

4. 检查pyodbc的安装环境

  • 确保你是在当前使用的Python环境下安装的pyodbc:运行pip list查看pyodbc是否在列表里,如果是虚拟环境,要先激活环境再安装
  • 尽量使用较新的pyodbc版本(比如>=4.0.30),旧版本可能存在兼容性问题

5. 确认驱动和Python位数一致

创建DSN时用的ODBC驱动,必须和Python的位数匹配。比如你用了64位的MySQL ODBC驱动,那Python也得是64位的,否则会出现找不到驱动的错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:40:26