使用pypyodbc连接Access数据库报错:未指定默认驱动程序
解决Access数据导入Python时的「未指定默认驱动程序」错误
我帮你排查一下这个问题,通常是驱动名称格式不对、位数不匹配或者驱动未安装导致的,一步步来解决:
1. 修正ODBC驱动名称的格式
你连接字符串里的驱动名称少了关键的空格,正确的写法应该是{Microsoft Access Driver (*.mdb)}(注意Driver和(*.mdb)之间的空格)。如果你的Access文件支持.accdb格式,也可以用更通用的{Microsoft Access Driver (*.mdb, *.accdb)}。
修正后的连接字符串示例:
import pypyodbc # 用原始字符串避免路径转义问题 con = pypyodbc.connect( r'DRIVER={Microsoft Access Driver (*.mdb)};' r'UID=admin;' r'DBQ=C:/Users/climate1/Documents/Test/dogs1.mdb;' ) cursor = con.cursor() # 这里可以继续写你的查询逻辑,比如: # cursor.execute("SELECT * FROM 你的表名") # 用完记得关闭连接 # con.close()
2. 检查Python与Access ODBC驱动的位数匹配
这个是常见的坑:
- 如果你的Python是64位版本,必须安装64位的Access ODBC驱动;如果是32位Python,只能用32位驱动,两者位数不匹配就会报驱动找不到的错误。
- 查看Python版本:打开命令行运行
python --version,输出里会标注32-bit或64-bit。 - 检查已安装的驱动:
- 64位系统打开64位ODBC管理器:
C:\Windows\System32\odbcad32.exe - 32位驱动要打开32位管理器:
C:\Windows\SysWOW64\odbcad32.exe
切换到「驱动程序」标签页,看看有没有对应版本的Microsoft Access Driver。
- 64位系统打开64位ODBC管理器:
3. 安装缺失的Access ODBC驱动
如果上面步骤里没找到对应的驱动,需要安装Microsoft Access Database Engine:
- 根据你的Python和Office位数(如果装了Office的话,驱动位数必须和Office一致),下载对应版本的「Microsoft Access Database Engine Redistributable」安装即可。
额外注意点
- 连接字符串里的路径可以用原始字符串(加
r前缀)或者双反斜杠\\,避免转义字符引发的问题。 - 如果你的Access数据库设置了密码,需要在连接字符串里加上
PWD=你的密码;。
内容的提问来源于stack exchange,提问作者SGray2
相关产品推荐
相关产品推荐

