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
相关产品推荐
相关产品推荐

