You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用pyodbc从Python访问Access文件遇IM002错误求助

解决pyodbc连接64位Microsoft Access(.accdb)时的IM002驱动错误

我来帮你搞定这个让人头疼的驱动找不到问题!你已经确认Python和Access都是64位版本,这是个好开头,但还有几个容易忽略的细节需要排查:

  • 确认64位Access ODBC驱动已正确安装
    打开系统的「ODBC数据源管理器(64位)」(直接搜索这个名称就能找到),切换到「驱动程序」标签页,检查是否存在Microsoft Access Driver (*.mdb, *.accdb)这个条目。如果没有,说明你需要安装对应的64位驱动:

    • 如果你没有安装Office,可以下载安装Microsoft Access 64位 Runtime
    • 如果已经装了64位Office,驱动应该已经自带,可能是之前的安装出了问题,可以尝试修复Office安装。
    • 注意:千万别打开32位的ODBC管理器(搜索结果里不带“(64-bit)”的那个),64位Python必须搭配64位驱动。
  • 修正连接字符串的格式
    你的连接字符串格式接近正确,但可以做两个小调整:

    1. 把驱动名称用大括号{}括起来,避免驱动名里的空格导致识别异常;
    2. 如果你的Access数据库没有设置用户名和密码,直接去掉UidPwd参数,很多时候默认的Access数据库不需要这些。
      调整后的连接字符串示例:
    cnxn = pyodbc.connect('DRIVER={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ={}'.format(db_file))
    

    (注意这里是两层大括号,因为Python的format会解析一层,最终传给ODBC的是一层大括号)

  • 检查数据库文件路径的合法性

    • 确保db_file绝对路径,相对路径有时候会导致Python找不到文件;
    • 路径里不要包含中文、空格或者特殊字符(比如括号),如果有,换成英文路径,或者用Python的原始字符串(在路径前加r,比如r"C:\My Docs\db.accdb")避免转义字符干扰。
  • 用简化代码测试连接
    先写一段最简化的测试代码,排除其他变量的干扰:

    import pyodbc
    
    # 替换成你的数据库绝对路径
    db_path = r"C:\full\path\to\your\database.accdb"
    try:
        conn = pyodbc.connect(f'DRIVER={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ={db_path}')
        print("连接成功!")
        conn.close()
    except Exception as e:
        print(f"错误详情:{e}")
    

    如果这段代码能成功连接,再逐步添加用户名和密码的参数;如果还是报错,那基本可以确定是驱动安装的问题,需要重新安装64位Access驱动。

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

火山引擎 最新活动