尝试使用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