求助:Python导入Excel至MS Access时遇ODBC驱动IM002错误
解决方法
错误原因分析
这个InterfaceError的核心问题是ODBC连接字符串未正确指定Access驱动,或驱动与Python版本不匹配,导致系统找不到对应的数据源驱动程序。
具体修复步骤
1. 确认ODBC驱动与Python版本匹配
- 32位Python必须搭配32位Access ODBC驱动,64位Python搭配64位驱动,二者位数不兼容会直接触发找不到驱动的错误。
- 验证Python位数:执行
python -c "import sys; print(sys.maxsize > 2**32)",返回True为64位,False为32位。
- 验证Python位数:执行
- 针对
.mdb格式(Access 2003及更早版本),驱动名称为Microsoft Access Driver (*.mdb);若后续使用.accdb格式,驱动名称为Microsoft Access Driver (*.mdb, *.accdb)。
2. 修正数据库连接与数据导入代码
使用pyodbc构建正确的连接字符串,示例代码如下:
import pyodbc import pandas as pd # 读取Excel指定工作表数据 df1 = pd.read_excel('123.xlsx', sheet_name='T_PBAR') # 构建Access数据库连接字符串(替换为你的mdb文件绝对路径) conn_str = ( r'DRIVER={Microsoft Access Driver (*.mdb)};' r'DBQ=D:\Data\MODEL.mdb;' # 这里改成实际的MODEL.mdb文件路径 ) # 建立连接并导入数据 conn = pyodbc.connect(conn_str) df1.to_sql( name='T_PBAR', # Access中要创建/写入的表名 con=conn, if_exists='replace', # 可选:replace覆盖现有表,append追加数据,fail表存在则报错 index=False # 不要将DataFrame的索引写入数据库 ) # 提交并关闭连接 conn.commit() conn.close()
3. 常见坑点排查
- 驱动名称必须完全匹配:不要写错驱动名称,比如漏写括号内的
(*.mdb)。 - 避免使用相对路径:尽量用绝对路径指定
.mdb文件位置,防止因工作目录问题导致文件找不到。 - 权限问题:确保Python进程有读取
.mdb文件的权限,不要放在受系统保护的目录(如C盘根目录、Program Files)下。
内容的提问来源于stack exchange,提问作者NICK_CS
相关产品推荐
相关产品推荐

