You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:10:36