64位Python环境下用pyodbc连接32位Access驱动失败求助
问题:32位Access与Anaconda 32位环境下pyodbc无法找到ODBC驱动
环境与问题描述
- 机器配置:64位Anaconda Python + 32位Microsoft Access
- 操作:在Anaconda Prompt执行
set CONDA_FORCE_32BIT=1切换到32位环境,但运行以下代码仅输出“SQL Server”:
import pyodbc for driver in pyodbc.drivers(): print(driver)
- 连接Access时抛出错误:
连接代码:
connStr = (r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};' r'DBQ=P:\DataCompilation\DataCompilationPy\local_access_db\SiteData.accdb;' ) conn = pyodbc.connect(connStr)
错误信息:
InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
已确认文件路径有效(同目录下.csv可正常导入),按位数匹配要求操作后仍无法解决。
解决方案
1. 确认32位ODBC驱动已安装
32位Access未必自带对应ODBC驱动,尤其是新版本Office。需手动安装32位Microsoft Access Database Engine:
- 若系统已安装64位Office组件,直接安装会冲突,需使用被动安装命令:
AccessDatabaseEngine.exe /quiet
(从微软官方渠道下载32位安装包)
2. 验证Anaconda环境是否真的切换到32位
执行set CONDA_FORCE_32BIT=1后,运行以下代码确认环境位数:
import sys print(sys.maxsize > 2**32) # 输出False为32位,True为64位
若仍为64位,需:
- 重新打开Anaconda Prompt,先执行
set CONDA_FORCE_32BIT=1再激活目标环境 - 或直接创建专属32位conda环境:
conda create -n py32 python=3.9 # 选择与Access兼容的Python版本 conda activate py32
3. 检查ODBC驱动名称的准确性
打开32位ODBC数据源管理器(路径:C:\Windows\SysWOW64\odbcad32.exe),在「驱动程序」标签下查看Access驱动的准确名称(比如旧版本可能是Microsoft Access Driver (*.mdb)),将连接字符串中的Driver部分替换为实际名称。
4. 重新安装32位版本的pyodbc
在32位conda环境中卸载并重装pyodbc,避免残留64位版本:
pip uninstall pyodbc pip install pyodbc
安装后可验证版本:
import pyodbc print(pyodbc.version)
5. 尝试使用DSN连接
在32位ODBC数据源管理器中创建系统DSN,指向目标.accdb文件,然后用DSN简化连接:
connStr = r'DSN=MyAccessDSN;' conn = pyodbc.connect(connStr)
这种方式可规避驱动名称拼写错误的问题。
内容的提问来源于stack exchange,提问作者Bojan Milinic
相关产品推荐
相关产品推荐

