pyodbc和ms访问2010连接错误

时间:2013-09-14 21:00:57

标签: python ms-access pyodbc

如何使用pyodbc访问我的Microsoft Access 2010数据库(accdb)? 在此之前,我使用了一个mdb数据库,它与连接字符串正常工作:

ODBC_CONN_STR = 'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=%s;' % ACCESS_DATABASE_FILE 

现在我用:

import pyodbc
ACCESS_DATABASE_FILE = "PSA_TEST.accdb"
ODBC_CONN_STR = 'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s;' % ACCESS_DATABASE_FILE
conn = pyodbc.connect(ODBC_CONN_STR)

我得到的错误是:     pyodbc.Error:('HY000','[HY000] [Microsoft] [ODBC-Treiber for Microsoft Access]KeinzulässigerDateniname。( - 1044)(SQLDriverConnect)')

转换为“文件名不可接受”。 我找到了一个相关的问题,但答案对我不起作用(Connecting to MS Access 2007 (.accdb) database using pyodbc)。我根据输出使用32位python:

python -c 'import struct; print struct.calcsize("P") * 8'

和MS Access 32位。

[编辑]

  • 以防万一,我用 os.path.isfile(ACCESS_DATABASE_FILE)检查文件是否存在
  • 可以使用Access
  • 打开文件
  • 使用新连接字符串打开上一个mdb文件会显示相同的错误消息,而afaik不是预期的行为

1 个答案:

答案 0 :(得分:7)

好的,很抱歉回答我自己的问题,但通过玩游戏,我了解到如果使用第二个连接字符串,则需要指定绝对路径名:

ACCESS_DATABASE_FILE = 'C:\\path\\to\\PSA_TEST.accdb'
ODBC_CONN_STR = 'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s;' % ACCESS_DATABASE_FILE

然后它甚至可以与accdb文件一起使用,也可以按预期使用mdb文件。