python - pyodbc 和 ms access 2010 连接错误

标签 python ms-access pyodbc

如何使用 pyodbc Access 我的 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 für Microsoft Access] Kein zulässiger Dateiname. (-1044) (SQLDriverConnect)')

翻译为“文件名 Not Acceptable ”。 我发现了一个相关问题,但答案对我不起作用 ( 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 文件会给出相同的错误消息,据我所知这不是预期的行为

最佳答案

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

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 文件一起使用。

关于python - pyodbc 和 ms access 2010 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18806349/

相关文章:

python - 将 Python 连接到远程 SQL Server

python - 如何一次删除多列字符串中的第一个字符?

Python 请求 URLLib3 连接池大小

python - 在 Python 中扩展继承函数的行为

C# - FilesystemWatcher、MDB 文件和 MySQL

python - ODBC中的错误,但Hive的CLI中没有错误?

python - str.contains 的可扩展解决方案与 pandas 中的字符串列表

sql - Ms access SQL更新

sql - 同时在 Access 中进行多个更新

python - 如何使用 AD 通用身份验证将 Python 的 pyodbc 连接到 MS SQL?