pyodbc和ms访问2010连接错误

pho*_*bic 1 python ms-access pyodbc

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

ODBC_CONN_STR = 'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=%s;' % ACCESS_DATABASE_FILE 
Run Code Online (Sandbox Code Playgroud)

现在我使用:

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)
Run Code Online (Sandbox Code Playgroud)

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

这意味着"文件名是不可接受的".我发现了一个相关的问题,但答案对我不起作用(使用pyodbc连接到MS Access 2007(.accdb)数据库).我根据输出使用32位python:

python -c 'import struct; print struct.calcsize("P") * 8'
Run Code Online (Sandbox Code Playgroud)

和MS Access 32位.

[编辑]

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

pho*_*bic 7

Ok, sorry to answer my own question, but by playing around, I learned that you need to specify the absolute path name if you use the second connection string:

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

Then it even works with the accdb file, as well as with the mdb file as expected.

  • 感谢您抽出宝贵时间发布解决方案.回答你自己的问题没有错. (2认同)