python - 使用pyodbc连接数据库 - 不可用

2 投票
4 回答
7862 浏览
提问于 2025-04-16 20:13

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

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

但是我遇到了这个错误:

追踪信息(最近的调用在最前面):
文件 "", 第 1 行,在 conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=;")

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

Jet'. (63) (SQLDriverConnectW); [HY000] [Microsoft][ODBC Microsoft Access Driver]一般错误 无法 打开注册表键 临时(易失性) Ace DSN 对于进程 0x167c 线程 0x1568 DBC 0x1c67a5c

Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] 不是一个有效的 文件名。(-1044); [HY000] [Microsoft][ODBC Microsoft Access Driver]一般错误 无法打开 注册表键 临时(易失性)Ace DSN 对于进程 0x167c 线程 0x1568 DBC 0x1c67a5c

Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver]一般错误 无法打开注册表键 临时 (易失性)Ace DSN 对于进程 0x167c 线程 0x1568 DBC 0x1c67a5c

Jet'. (63); [HY000] [Microsoft][ODBC Microsoft Access Driver] 不是一个有效的 文件名。(-1044)")

在Stack Overflow上有一个类似的问题,但那是关于32位和64位的兼容性问题,而我没有这个问题。对于这个问题似乎没有好的答案,但希望有人能帮我连接到我的数据库,因为我不知道还有其他方法可以用Python查询或写入Access 2007的数据。

谢谢

4 个回答

0

你的文件夹里有一个*.ldb文件吗?

我之前也遇到过类似的错误信息,不过我的错误信息里还提到“文件正在使用中”。在我的情况下,我最后发现数据库上有一个锁(就是和.mdb文件在一起的.ldb文件)。我有一个服务一直在使用这个数据库——看来是时候换一个支持多用户的数据库引擎了。

作为实验,我复制了一份数据库,然后用pyodbc连接到这个复制的数据库,结果连接得很好。显然这不是一个长期的解决办法,但至少现在我知道问题出在哪里了。

2

试着把文件名中的括号去掉。

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

希望这能帮到你……

撰写回答