2011-06-24 191 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