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

Posted

技术标签:

【中文标题】尝试使用pyodbc将python连接到Access数据库时出错[重复]【英文标题】:error when trying to connect python to Access database using pyodbc [duplicate] 【发布时间】: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..请作为答案发布,我会接受.. 【参考方案1】:

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

您可能想检查您是否尝试使用来自 64 位 Python 的 32 位驱动程序或其他方式,但鉴于错误消息,这似乎不太可能。

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

【讨论】:

在初始评论后将此作为答案发布 - 我认为错误消息对此不太清楚通常是问题的一部分。

以上是关于尝试使用pyodbc将python连接到Access数据库时出错[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 pyodbc 将 Python 连接到 MS SQL Server

使用 Pyodbc 连接到具有用户定义函数的 MS Access 文件

使用 pyodbc 将 SQL Server 连接到 Python 3

Python pyodbc 连接到 ms 访问数据库

在 Windows 上使用 pyodbc 连接到 Informix

PyOdbc 无法连接到 sql server 实例