2011-06-24 137 views
2

我正尝试使用以下连接字符串连接到Access 2007数据库。python - 使用pyodbc连接到数据库 - 不能正常工作

conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=<C:\Users\JSeinfeld\Desktop\Backup databases\Database_6.7.accdb>;") 

我得到这个错误:

Traceback (most recent call last):
File "", line 1, in conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=;")

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

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

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 0x167c Thread 0x1568 DBC 0x1c67a5c

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

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

关于被如此这样的一个问题,但是,是我没有一个32位/ 64位兼容性问题。对于这个问题似乎没有一个好的答案,但希望有人可以帮助我连接到我的数据库,因为我不知道有任何其他方式用python查询或写入Access 2007数据。

谢谢

回答

1

试着从括号中取出文件名。

conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\JSeinfeld\Desktop\Backup databases\Database_6.7.accdb") 
+0

嘿斯蒂芬,我可以”这个测试直到星期一,但我希望它就是这么简单:)但是,它对我来说非常合适。 – jerry

0

您的文件夹中是否存在* .ldb文件?

我有非常类似的错误消息,但我的也包括“文件已被使用”。就我而言,我终于意识到数据库上存在一个锁(.mdb旁边的一个.ldb文件)。我有一个运行的服务,它始终使用数据库 - 我想是时候切换到多用户数据库引擎了。

作为一个实验,我做了一个数据库的副本,并且pyodbc连接到拷贝就好了。这显然不是一个长期的解决方案,但至少现在我知道问题是什么。

3

有同样的问题 - 这是在逃避的接入位置使用反斜线分贝

>>> conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\access\\site_be.accdb;")

的一个简单的例子担任,而

>>> conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\access\site_be.accdb;")

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

希望有帮助..

0

Fabiolus说得没错。

反斜杠字符表示下一个字符在字符串中有特殊含义。因此破译双反斜线...第一个反斜杠告诉蟒蛇为特殊字符的字符串准备,第二反斜线是特殊字符的字符串(在这种情况下是一个反斜杠)

\n = newline 
\t = tab 
\\ = backslash 
相关问题