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位.
[编辑]
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.