使用pyodbc打开Jet Access数据库时遭遇无效密码错误(-1905)
解决pyodbc打开无密码Access数据库提示“无效密码”的问题
可行解决方案:
检查Python与Access驱动的位数匹配
Access驱动分32位和64位版本,Python运行环境的位数必须和驱动完全一致:- 64位Python需搭配64位Microsoft Access Database Engine
- 32位Python需搭配32位版本
位数不匹配会导致驱动识别异常,触发无意义的密码错误提示。
切换为OLEDB连接方式
放弃ODBC驱动,改用ACE OLEDB驱动连接,示例代码:import pyodbc db_path = "你的数据库文件路径" conn_str = ( r"Provider=Microsoft.ACE.OLEDB.12.0;" rf"Data Source={db_path};" r"Persist Security Info=False;" ) conn = pyodbc.connect(conn_str)若为旧版Jet格式(.mdb),可尝试替换驱动为
Provider=Microsoft.Jet.OLEDB.4.0;,注意该驱动仅支持32位环境。调整ODBC连接字符串参数
尝试移除Exclusive=No参数,或添加Persist Security Info=False,修改后的连接字符串示例:conn_str = ( r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};" rf"DBQ={db_path};" r"Persist Security Info=False;" )验证数据库文件路径与状态
将数据库文件复制到不含中文、空格或特殊符号的本地路径后再尝试连接,避免路径字符导致的驱动解析异常。
内容的提问来源于stack exchange,提问作者John John
相关产品推荐
相关产品推荐

