python - 使用pyodbc连接到数据库 - 无法正常工作

时间:2011-06-24 14:51:27

标签: python database pyodbc

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

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

我收到此错误:

  

追踪(最近的呼叫最后):
  文件“”,第1行,in          conn = pyodbc.connect(“Driver = {Microsoft   访问驱动程序(* .mdb,   * .ACCDB)}; DBQ =;“)

     

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

     

射流”。 (63)(SQLDriverConnectW);   [HY000] [微软] [ODBC Microsoft   访问驱动程序]一般错误无法   打开注册表项临时(volatile)   进程0x167c线程的Ace DSN   0x1568 DBC 0x1c67a5c

     

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

     

射流”。 (63); [HY000] [微软] [ODBC   Microsoft Access驱动程序]一般错误   无法打开注册表项临时   (volatile)进程0x167c的Ace DSN   线程0x1568 DBC 0x1c67a5c

     

射流”。 (63); [HY000] [微软] [ODBC   Microsoft Access驱动程序]无效   文件名。 (-1044)“)

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

由于

4 个答案:

答案 0 :(得分: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)")

希望有所帮助..

答案 1 :(得分:1)

尝试从文件名中删除括号。

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

Fabiolus说得对。

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

\n = newline
\t = tab
\\ = backslash