我在 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
来自 Access ODBC 的“一般错误无法打开注册表项临时(易失性)...”
3)尝试确保我有一个有效的连接字符串https://stackoverflow.com/questions/6469545/python-connecting-to-a-database-with-pyodbc-not-working#=
4) 当我尝试运行此代码时,Access 数据库未打开。我已重新启动计算机,但仍然收到此错误。
如果我可以尝试任何其他操作,请告诉我。
从一个简单的连接字符串开始,只有
DRIVER
和 DBQ
属性,没有嵌入换行符...
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;')
如果您只使用 *.mdb,您可以像这样建立连接:以避免错误 ODBC Driver not found。
db_main = f“C:\Users\jseinfeld\Desktop\Databasetest1.mdb”
conn_string = r"DRIVER={Microsoft Access 驱动程序 (*.mdb)};"
f“DBQ={db_main}”