2

我正在尝试使用以下连接字符串连接到 Access 2007 数据库。

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

我收到此错误:

Traceback(最近一次调用最后一次):
文件“”,第 1 行,在 conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=;")

错误:('HY000',“[HY000] [Microsoft][ODBC Microsoft Access Driver]一般错误无法打开注册表项临时(易失)进程0x167c的Ace DSN线程0x1568 DBC 0x1c67a5c

喷射'。(63) (SQLDriverConnectW); [HY000] [Microsoft][ODBC Microsoft Access Driver]一般错误无法打开注册表项临时(易失性)进程0x167c线程0x1568 DBC 0x1c67a5c的Ace DSN

喷射'。(63); [HY000] [Microsoft][ODBC Microsoft Access Driver] 文件名无效。(-1044); [HY000] [Microsoft][ODBC Microsoft Access Driver]一般错误无法打开注册表项临时(易失性)进程0x167c线程0x1568 DBC 0x1c67a5c的Ace DSN

喷射'。(63); [HY000] [Microsoft][ODBC Microsoft Access Driver]一般错误无法打开注册表项临时(易失性)进程0x167c线程0x1568 DBC 0x1c67a5c的Ace DSN

喷射'。(63); [HY000] [Microsoft][ODBC Microsoft Access Driver] 文件名无效。(-1044)")

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

谢谢

4

4 回答 4

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)")

希望有帮助..

于 2011-08-04T10:50:13.580 回答
1

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

conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\JSeinfeld\Desktop\Backup databases\Database_6.7.accdb")
于 2011-06-24T15:19:00.917 回答
0

您的文件夹中有 *.ldb 文件吗?

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

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

于 2011-08-02T13:09:55.593 回答
0

法比卢斯做对了。

反斜杠字符表示下一个字符在字符串中具有特殊含义。所以破译双反斜杠......第一个反斜杠告诉python准备一个特殊的字符串字符,第二个反斜杠是特殊的字符串字符(在这种情况下是一个反斜杠)

\n = newline
\t = tab
\\ = backslash
于 2011-08-10T23:13:15.440 回答