Pyodbc错误-Python到MS访问



我在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:Usersjseinfeld;
DBQ=C:UsersjseinfeldDesktopDatabasetest1.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

在python 中打开Access数据库时出错

"常规错误无法打开注册表项Temporary(volatile)"来自Access ODBC

3) 尝试确保我有一个有效的连接字符串https://stackoverflow.com/questions/6469545/python-connecting-to-a-database-with-pyodbc-not-working#=

4) 当我尝试运行此代码时,Access数据库未打开。我已经重新启动了我的计算机,但仍然收到这个错误。

请告诉我是否还有其他行动我可以尝试。

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

conn_string = r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:UsersjseinfeldDesktopDatabasetest1.accdb;'

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

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

conn_string = (
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    r'DBQ=C:UsersjseinfeldDesktopDatabasetest1.accdb;')

最新更新