PYODBC InterfaceError-找不到数据源名称

时间:2019-10-08 15:22:53

标签: python ms-access pyodbc

我正在尝试使用pyodbc将Python连接到MS Access数据库,但是每次出现以下错误时:

pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

这是我写的将python连接到MS Access的内容:

import pyodbc

conn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=D:\PILOT_DATA.accdb;')
cursor = conn.cursor()
cursor.execute('select * from p_inventor')

for row in cursor.fetchall():
    print (row)

根据错误,找不到数据源名称,因此我将“ DRIVER”更改为“ DSN”

import pyodbc

conn = pyodbc.connect(r'DSN={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=D:\PILOT_DATA.accdb;')
cursor = conn.cursor()
cursor.execute('select * from p_inventor')

for row in cursor.fetchall():
    print (row)

但这没有帮助。我收到以下错误:

pyodbc.Error: ('IM010', '[IM010] [Microsoft][ODBC Driver Manager] Data source name too long (0) (SQLDriverConnect)')

我尝试过的其他解决方法是同时使用python 32位和64位

以下是版本详细信息:

  • Python 3.7.4 64位
  • 点19.2.3
  • pyodbc-4.0.27
  • Office365 16

了解将Python连接到ACCESS数据库还能做些什么,将非常有帮助。 预先感谢!

3 个答案:

答案 0 :(得分:0)

根据pyodbc docs,您需要设置一个ODBC,并且可以像这样检查它(如@Parfait所说);

import pyodbc
[x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]

答案 1 :(得分:0)

如果将Office 365安装为“即点即用”(C2R),则某些Office组件存储在非Office应用程序不可见的“隔离环境”中。 Access数据库引擎是这些组件之一。

在这种情况下,从外部(非Office)应用程序使用Access数据库引擎的解决方案是按照Microsoft Docs文章中的说明下载并安装Access Database Engine可再发行软件包:

Can't use the Access ODBC driver or OLEDB provider outside Office Click-to-Run applications

答案 2 :(得分:0)

我已经通过安装Access数据库引擎解决了此问题。为此,我必须取消安装office365程序->安装访问数据库引擎->重新安装office365。然后代码可以完美运行!