【问题标题】:pyodbc and ms access 2010 connection errorpyodbc 和 ms 访问 2010 连接错误
【发布时间】:2013-09-14 21:00:57
【问题描述】:

如何使用 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 für Microsoft Access] Kein zulässiger Dateiname. (-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 文件会给出相同的错误消息,这不是预期的行为

【问题讨论】:

  • access 数据库是否在您当前的工作目录中?如果没有,您将需要提供文件的路径以及文件名。
  • 是的。相同的代码适用于同一目录中的 mdb 文件,连接字符串略有不同。
  • 实际上,当我指定错误的文件名时,我会收到完全相同的错误消息。我检查了这是否是由于下划线没有被正确解释,但是将文件名更改为 test.accdb 并不会改变结果。

标签: python ms-access pyodbc


【解决方案1】:

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

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

【讨论】:

  • 感谢您花时间发布您的解决方案。回答自己的问题并没有错。
  • 对于相对路径,我们使用 dbPath = os.path.join(Path(file).parent.parent, "datasets\CDR\CDR_Data.mdb") connection_string = ' Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s' %dbPath+';'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
相关资源
最近更新 更多