使用Python的pyodbc连接MS Access数据库时仅识别SQL Server驱动问题
解决pyodbc无法识别MS Access驱动的问题
我之前也碰到过一模一样的问题,别慌,咱们一步步排查解决:
1. 先确认Access驱动是否安装
pyodbc连接Access数据库必须依赖Microsoft Access Database Engine,这是关键前提:
- 如果你是32位系统,直接下载对应32位版本安装即可;
- 64位系统要注意:如果已经装了32位Office,只能装32位的Access Database Engine(否则会触发版本冲突报错);纯净64位系统可以直接装64位版本。
- 要是安装时遇到“无法安装64位版本,因为已安装32位Office”的提示,用静默安装命令绕过:
AccessDatabaseEngine_X64.exe /quiet
2. 检查Python与驱动的架构匹配
pyodbc对位数匹配要求很严格,必须保证Python和Access驱动的位数完全一致:
- 64位Python ↔ 64位Access驱动
- 32位Python ↔ 32位Access驱动
- 可以用这段代码快速确认Python位数:
import sys print(sys.maxsize > 2**32) # 返回True是64位,False是32位
3. 手动指定驱动名称测试连接
有时候pyodbc.drivers()可能不会完整列出所有驱动,但你可以直接手动指定驱动名尝试连接:
- 常用驱动名称:
Microsoft Access Driver (*.mdb, *.accdb)(新老版本通用) - 测试连接代码示例:
import pyodbc try: conn_str = r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\你的数据库路径\example.accdb;' conn = pyodbc.connect(conn_str) print("连接成功!") conn.close() except Exception as e: print(f"连接失败:{str(e)}")
4. 进阶排查:检查PATH和注册表
- 确保Access驱动的安装目录(比如
C:\Program Files\Microsoft Office\root\Office16或C:\Program Files (x86)\Microsoft Office\root\Office16)在系统PATH环境变量中; - 打开注册表编辑器,查看
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI(64位)或HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI(32位)下是否有Access驱动的条目,没有的话说明驱动安装不完整,建议重新安装。
内容的提问来源于stack exchange,提问作者Srikant Jayaraman
相关产品推荐
相关产品推荐

