尝试使用 pyodbc 将 python 连接到 Access 数据库时出错

error when trying to connect python to Access database using pyodbc

我正在尝试使用 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() , returns

所以我的理解是驱动程序 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

错误消息保持不变

有什么建议吗??

不确定您的具体情况,但可能不是编程错误,而是安装/环境错误。我有 64 位 office 的标准安装,并从 64 位 Python 连接到它。这适用于您提供的代码。

您可能想要检查您是否正在尝试从 64 位 Python 或其他方式使用 32 位驱动程序 ,但考虑到错误消息,这似乎不太可能。

如果这不能解决问题,建议您在另一台机器/用户帐户上尝试相同的代码,看看您是否可以找出差异,如果它在那里工作的话。