I am trying to connect to an Access 2007 database with the following connection string.
conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=;")
I get this error:
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)")
There is another question like this on SO, but there was a 32/64bit compatibility issue which I do not have. There doesn't seem to be a good answer for this question, but hopefully someone can help me connect to my database because I don't know of any other way to query or write data to Access 2007 with python.
Thanks
解决方案
Had the same issue - it was a simple case of escaping the backslash used in the location of the access db
>>> conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\access\\site_be.accdb;")
worked as whereas
>>> conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\access\site_be.accdb;")
was giving me the error
Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] Not a valid file name. (-1044)")
Hope that helped..