Python使用pypyodbc连接.accdb文件失败,报IM002错误求助
解决Microsoft Access .accdb连接失败(IM002错误)的问题
这个错误核心是ODBC驱动管理器找不到你指定的Access驱动,下面是一步步的排查和解决方法:
1. 确认Access ODBC驱动已安装,且位数与Python匹配
ODBC驱动分32位和64位,必须和你的Python版本完全对应,这是最常见的出错原因:
- 如果你的Python是64位:需要安装64位的Microsoft Access ODBC驱动,可直接安装免费的Microsoft Access Runtime(无需完整Office),选择对应64位版本。
- 如果你的Python是32位:则要安装32位的Access Runtime或Office。
想快速确认Python位数?打开Python终端运行以下代码:
import sys print(sys.maxsize > 2**32) # 返回True是64位,False是32位
2. 验证驱动名称是否正确
不同Office/Runtime版本的驱动名称可能略有差异,你可以通过ODBC数据源管理器确认:
- 64位系统下查看64位驱动:打开
C:\Windows\System32\odbcad32.exe - 查看32位驱动(无论系统位数):打开
C:\Windows\SysWOW64\odbcad32.exe
进入后切换到「驱动程序」标签,找到类似Microsoft Access Driver (*.mdb, *.accdb)的条目,把这个名称完全复制到你的连接字符串里,确保没有拼写错误或多余空格。
3. 检查数据库文件路径是否正确
连接字符串里的DBQ参数必须指向正确的文件路径:
- 如果数据库和脚本在同一目录,确认文件名无拼写错误(比如有没有把
.accdb写成.mdb) - 优先使用绝对路径避免相对路径的坑,例如:
r'DBQ=C:\Users\YourName\Documents\file.accdb;'
4. 尝试换用pyodbc替代pypyodbc
pypyodbc的兼容性可能不如pyodbc,你可以试试这个方案:
先安装pyodbc:
pip install pyodbc
然后用以下代码连接:
import pyodbc conn = pyodbc.connect( r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};' r'DBQ=C:\full\path\to\file.accdb;' ) cur = conn.cursor()
额外注意事项
- 确保数据库文件没有被其他程序锁定(比如Access客户端正在打开该文件)
- 如果是企业环境,可能需要联系管理员确认ODBC驱动的安装权限
内容的提问来源于stack exchange,提问作者sshussain270
相关产品推荐
相关产品推荐

