Pyodbc 错误 - Python 到 MS Access

Pyodbc Error - Python to MS Access

我 运行 使用 Windows 7、Python 2.7 和 Microsoft Access 2013。

当我尝试 运行:

import pyodbc
conn_string = '''
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\jseinfeld;
DBQ=C:\Users\jseinfeld\Desktop\Databasetest1.accdb;
'''
connection = pyodbc.connect(conn_string)

我收到以下错误消息:

Error: ('HY000', "[HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x29dc Thread 0x113c DBC 0x8a3ed48    

Jet'. (63) (SQLDriverConnect); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x29dc Thread 0x113c DBC 0x8a3ed48

Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] Not a valid file name. (-1044); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x29dc Thread 0x113c DBC 0x8a3ed48 

Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x29dc Thread 0x113c DBC 0x8a3ed48

Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] Not a valid file name. (-1044)")

我知道有很多关于 Pyodbc 和 MS Access 的问题。我已经执行了以下操作:

1) 确保我有 64 位 Python 和 64 位 MS Access

2) 允许帐户访问 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC 注册表项

https://support.microsoft.com/en-us/kb/295297

Error in opening an Access database in python

"General error Unable to open registry key Temporary (volatile) ..." from Access ODBC

3) 试图确保我有一个有效的连接字符串

4) 当我尝试 运行 这段代码时,Access 数据库没有打开。我已重新启动计算机,但仍收到此错误。

如果我可以尝试任何其他操作,请告诉我。

从只有 DRIVERDBQ 属性且没有嵌入换行符的简单连接字符串开始...

conn_string = r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\jseinfeld\Desktop\Databasetest1.accdb;'

获得最简单的连接字符串后,您可以根据需要添加和测试其他连接属性。

除了 HansUp 的回答之外,我还使用以下技术来构建没有嵌入式换行符的连接字符串,这些连接字符串仍然很容易被我们人类阅读:

conn_string = (
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    r'DBQ=C:\Users\jseinfeld\Desktop\Databasetest1.accdb;')