【发布时间】:2020-11-09 01:03:01
【问题描述】:
我正在尝试使用 python pyodbc 连接到我的 PC 上本地存储的 microsoft access 数据库,但我一直收到一个很长的错误。这是我的代码。
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\James\Documents\Database1.accdb;')
cursor = conn.cursor()
cursor.execute('select * my_table')
这是错误,或部分:
Error: ('HY000', "[HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x2cd0 Thread 0x268c DBC 0x7f37e34 Jet'. (63) (SQLDriverConnect); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x2cd0 Thread 0x268c DBC 0x7f37e34 Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] The database you are trying to open requires a newer version of Microsoft Access. (-1073); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x2cd0 Thread 0x268c DBC 0x7f37e34 Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x2cd0 Thread 0x268c DBC 0x7f37e34 Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] The database you are trying to open requires a newer version of Microsoft Access. (-1073)")
使用pyodbc.drivers(),返回
所以我的理解是驱动程序Driver={Microsoft Access Driver (*.mdb, *.accdb 存在于我的机器上
我已经下载并安装了 Microsoft 的 Access 数据库引擎,但没有帮助.. 我还将连接字符串更改为
DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;{FIL=MS Access};DriverId=25;DefaultDir=C:\Users\James\Documents;DBQ=C:\Users\James\Documents\Database1.accdb
错误信息保持不变
有什么建议吗??
【问题讨论】:
-
如果我在允许访问文件并运行代码的位置创建一个空白数据库(在修复 SQL 以读取
select * from my_table之后),它运行没有问题。因此,我敢打赌,ODBC 驱动程序的安装存在问题,或者运行脚本的用户帐户的权限存在问题(对文件没有权限,或者其他一些访问问题 - 没有双关语)。是否安装了 Access?你能从那里访问数据库吗? -
@Grismar 感谢您发现那个 SQL 错字!!我可以毫无问题地打开数据库并对表进行更改。我可以保存编辑文件名等。当我运行 MS access DB 引擎的安装时,会更新/纠正错误的 ODBC 驱动程序吗?还是我需要单独安装..
-
不确定您的具体情况,但可能不是编程错误,而是安装/环境错误。我有一个标准安装的 64 位办公室,并从 64 位 Python 连接到它。您可能想检查您是否正在尝试从 64 位 Python 或其他方式使用 32 位驱动程序,但鉴于错误消息,这似乎也不太可能。建议在另一台机器/用户帐户上尝试相同的代码,看看是否可以在其中工作时发现差异。
-
非常感谢,你的权利..我使用的是 32 位版本的 python 和 64 位版本的 MS Office..请作为答案发布,我会接受..