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

Python连接32位Access 2007数据库失败及用户密码验证需求

解决64位Windows 11 IoT + Python 3.12连接带密码Access数据库的问题

问题根源

报错IM002的核心原因是系统缺少Access对应的ODBC驱动,且64位Python只能匹配64位ODBC驱动。当前pyodbc.drivers()仅返回SQL Server驱动,证明未安装适配的Access ODBC驱动。

解决步骤

1. 安装64位Access ODBC驱动

  • 下载Microsoft Access Database Engine 2016 Redistributable(高版本驱动向下兼容Access 2007)的64位安装包。
  • 若系统已安装32位Office,直接双击安装会触发冲突报错,需通过命令行静默安装:
    打开管理员权限的命令提示符,执行:
    AccessDatabaseEngine_X64.exe /passive
    
  • 安装完成后,重新运行pyodbc.drivers(),应能看到Microsoft Access Driver (*.mdb, *.accdb)。

2. 编写带密码的数据库连接与验证代码

替换实际的数据库密码、表名和字段名后运行:

import pyodbc

# 配置数据库基础信息
db_path = r"E:\MasterMindAcc\Sys\NetNo.accdb"
db_password = "你的数据库密码"
target_user = "Admin"

# 构建连接字符串
conn_str = (
    r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};"
    r"DBQ=" + db_path + ";"
    r"PWD=" + db_password + ";"
)

try:
    # 建立数据库连接
    conn = pyodbc.connect(conn_str)
    cursor = conn.cursor()
    
    # 获取用户输入密码并验证
    input_pwd = input("请输入密码:")
    # 替换为你的实际表名和密码字段名(示例:表名Users,密码字段UserPassword)
    cursor.execute("SELECT UserPassword FROM Users WHERE Username = ?", (target_user,))
    db_record = cursor.fetchone()
    
    if db_record and db_record[0] == input_pwd:
        print("密码验证成功")
    else:
        print("用户名不存在或密码错误")
        
except pyodbc.Error as e:
    print(f"错误详情:{e}")
finally:
    # 确保数据库连接关闭
    if 'conn' in locals() and conn:
        conn.close()

备选方案(若无法安装64位驱动)

如果系统因32位Office冲突无法安装64位驱动,可采取以下操作:

  • 卸载当前64位Python 3.12,安装32位Python 3.12.0
  • 安装32位Access ODBC驱动,再运行上述代码即可正常连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 11:52:38