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

Python查询Access数据库时出现‘Data Source Name Not Found’错误求助

解决pyodbc连接Access时的IM002错误

嘿,我之前也遭遇过这个一模一样的ODBC驱动报错!结合你已经配置的32位环境(Access 2016 32位、Python2.7.13 32位、32位pyodbc),咱们来一步步排查解决:

先确认你的连接字符串是否正确

这个错误最常见的原因就是连接字符串里的驱动名称不匹配,或者DSN配置有问题。

情况1:你用的是DSN连接

如果你的代码是类似这样的:

conn = pyodbc.connect('DSN=YourAccessDSN;')

请务必检查:

  • 32位ODBC数据源管理器里配置的DSN名称和代码里的完全一致(包括大小写,虽然Windows默认不区分,但最好严格匹配)
  • 该DSN确实指向了你要连接的Access数据库文件,并且测试连接是成功的

情况2:改用无DSN的直接连接(更推荐)

有时候DSN配置容易出各种隐藏问题,直接用数据库文件路径的连接字符串会更可靠,示例代码如下:

import pyodbc

# 替换成你的数据库文件实际路径
db_path = r'C:\Users\YourName\Documents\your_database.accdb'

conn_str = (
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    r'DBQ=' + db_path + ';'
)

try:
    conn = pyodbc.connect(conn_str)
    print("连接成功!")
    # 后续操作...
    conn.close()
except pyodbc.Error as e:
    print(f"错误信息:{e}")

注意这里的驱动名称{Microsoft Access Driver (*.mdb, *.accdb)}要和32位ODBC管理器里显示的驱动名称完全一致,如果你安装的是Access 2016,这个名称是正确的,但如果是其他版本可能略有不同,一定要核对。

再验证一次环境位数匹配

虽然你说已经用了32位组件,但可以再确认一下,避免不小心装错:
在Python交互环境里运行以下代码:

import sys
# 输出False表示是32位Python,True是64位
print("Python是32位吗?", sys.maxsize <= 2**32)

import pyodbc
print("pyodbc版本:", pyodbc.version)

确保Python确实是32位,pyodbc也是对应32位版本(如果是用pip装的,32位Python会自动装32位pyodbc,但手动安装的话要注意)。

其他排查点

  • 检查Access数据库文件是否被锁定:如果Access软件正在打开这个数据库,Python可能无法连接,先关闭Access再试
  • 检查文件权限:确保Python脚本有读取该数据库文件的权限,不要把文件放在Program Files这类系统保护文件夹里
  • 重启你的Python环境或者电脑:有时候ODBC驱动的配置需要重启才能生效

你收到的错误信息:
pyodbc.InterfaceError: ('IM002', u'[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:21:32