【问题标题】:InterfaceError with sqlalchemy and Microsoft Access Driver in Python使用 Python 中的 sqlalchemy 和 Microsoft Access 驱动程序的 InterfaceError
【发布时间】:2020-12-14 14:01:38
【问题描述】:

我想连接到我的主机系统上的 MS Acces 数据库。 我在 jupyter notebook 中使用 Python 3.7。当我连接到引擎时,出现异常 InterfaceError。

我的代码:

import urllib
from sqlalchemy import create_engine

connection_string = (
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    r'DBQ=./Datenbank1.accdb;'
)
connect_str = f"access+pyodbc:///?odbc_connect={urllib.parse.quote_plus(connection_string)}"
engine = create_engine(connect_str, echo=True)
engine.connect()

InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben (0) (SQLDriverConnect)')(此错误的背景: http://sqlalche.me/e/13/rvf5)

未找到数据源名称且未指定默认驱动程序 (0) (SQLDriverConnect)')

你能帮我找出错误吗? 也许我缺少正确的驱动程序,但我不知道如何安装它

【问题讨论】:

  • 查看pyodbc.drivers() 返回的列表,了解您的 Python 应用程序可以使用哪些 ODBC 驱动程序。
  • 好的,我得到一个包含两个驱动程序的列表 ['SQL Server'、'ODBC Driver 17 for SQL Server']。如何添加新的 Microsoft 驱动程序?
  • 该列表表明您正在运行 64 位 Python,因此您可以从 here 下载 64 位 Access 驱动程序。
  • 好的,这行得通。现在我有以下驱动程序:['SQL Server'、'ODBC Driver 17 for SQL Server'、'Microsoft Access Driver (.mdb, *.accdb)'、'Microsoft Excel Driver (.xls , .xlsx, *.xlsm, *.xlsb)', 'Microsoft Access dBASE 驱动程序 (.dbf, .ndx, *.mdx)', 'Microsoft Access 文本驱动程序 (.dbf, .ndx, *.mdx)' i>.txt, *.csv)'] 但现在我得到另一个错误stackoverflow.com/questions/65301510/…

标签: python ms-access sqlalchemy driver pyodbc


【解决方案1】:

在 Windows 上,判断 Python 脚本是以 32 位还是 64 位运行的一种方法是检查来自 pyodbc.drivers() 的输出。在 32 位模式下,列表将包括较旧的“Jet”驱动程序……

Microsoft Access 驱动程序 (*.mdb)

...(注意:没有提到 *.accdb),它随 Windows 一起提供,仅提供 32 位版本。

在这种情况下,pyodbc.drivers() 返回的列表不包括该驱动程序,因此我们可以推断该脚本以 64 位运行。因此解决方案是从here 下载更新的“ACE”ODBC 驱动程序的 64 位版本。

有关通过 pyodbc 连接 Access 的更多详细信息,请参阅pyodbc wiki

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 2011-01-03
    • 2011-10-15
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多