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

使用pandas_access连接Microsoft Access数据库时遭遇WinError 2文件未找到错误求助

解决[WinError 2] The system cannot find the file specified问题(pandas_access连接Access数据库)

我一眼就看穿问题所在了——pandas_access这个库本质上是通过调用mdb-tools工具集里的mdb-tables命令行程序来读取Access数据库的,但你的Windows系统里并没有安装这个工具,所以Python的subprocess模块找不到对应的可执行文件,才会抛出这个错误。

下面给你两种有效的解决方案,按需选择:

方案一:安装mdb-tools并配置环境变量

mdb-tools是原本为Linux开发的Access数据库处理工具,Windows需要使用第三方编译的版本:

  • 如果你用Chocolatey包管理器(推荐),直接打开管理员权限的命令提示符,运行:
    choco install mdbtools
    
  • 如果你不想用包管理器,可以下载第三方编译好的mdb-tools二进制文件,解压后把包含mdb-tables.exe的bin目录添加到系统的PATH环境变量中。

安装完成后,打开新的命令提示符,输入mdb-tables,如果能看到工具的帮助信息,说明配置成功,此时再运行你的原代码就不会报错了。

方案二:用pyodbc直接连接(更稳定的Windows方案)

既然你已经导入了pyodbc,不如直接用它来连接Access数据库,这种方式不需要依赖外部命令行工具,适配性更好:

import pyodbc
import pandas as pd

def access_db_to_dataframe(db_path):
    # 根据数据库版本选择驱动,.accdb用这个,.mdb也兼容
    conn_string = (
        r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
        r'DBQ=' + db_path + ';'
    )
    
    try:
        # 建立连接
        conn = pyodbc.connect(conn_string)
        # 获取所有用户表(过滤掉系统表)
        cursor = conn.cursor()
        tables = [tbl.table_name for tbl in cursor.tables(tableType='TABLE')]
        
        print(f"数据库中的表:{tables}")
        
        # 读取第一个表到DataFrame(你可以替换成指定表名)
        if tables:
            df = pd.read_sql(f"SELECT * FROM {tables[0]}", conn)
            return df
        else:
            print("数据库中没有用户表")
            return None
    except Exception as e:
        print(f"连接出错:{str(e)}")
        return None
    finally:
        if 'conn' in locals():
            conn.close()

# 测试调用你的数据库路径
rig_data = r'C:/Users/e211816/OneDrive - WFT/Desktop/Kvitebjørn FF Calibration/Data/xyz.accdb'
icon_data = 'C:/Users/e211816/OneDrive - WFT/Desktop/Kvitebjørn FF Calibration/Data/icon.mdb'

# 读取rig_data数据库
df_rig = access_db_to_dataframe(rig_data)
if df_rig is not None:
    print(df_rig.head())

# 读取icon_data数据库
df_icon = access_db_to_dataframe(icon_data)
if df_icon is not None:
    print(df_icon.head())

额外注意事项

如果运行pyodbc代码时提示找不到驱动,需要安装Microsoft Access Database Engine 2016 Redistributable,注意要和你的Python位数一致(32位Python装32位引擎,64位对应64位),否则会出现驱动不兼容的问题。

内容的提问来源于stack exchange,提问作者dkrol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:33:11