Python PYODBC InterfaceError-未找到数据源名称

Python PYODBC InterfaceError-未找到数据源名称,python,ms-access,pyodbc,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)') pyodbc.Error: ('IM010', '[IM010] [Microsoft]

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

pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
pyodbc.Error: ('IM010', '[IM010] [Microsoft][ODBC Driver Manager] Data source name too long (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)
根据错误,它找不到数据源名称,因此我将“驱动程序”更改为“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.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
pyodbc.Error: ('IM010', '[IM010] [Microsoft][ODBC Driver Manager] Data source name too long (0) (SQLDriverConnect)')
我尝试过的其他解决方法是同时使用python 32位和64位

以下是版本详细信息:

  • Python 3.7.4 64位
  • pip 19.2.3
  • pyodbc-4.0.27
  • 公务员365 16
若能知道我还能做些什么将Python连接到ACCESS数据库,那个将非常有帮助。 提前谢谢

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


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

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


我通过安装Access数据库引擎解决了这个问题。为了做到这一点,我必须卸载office365程序->安装access数据库引擎->重新安装office365。然后代码就可以完美地运行了

您的Office 365是64位的吗?请使用
pyodbc.drivers()
@PaichengWu检查可用的驱动程序,是的,它是64位的。谢谢您的指导。我通过安装Access数据库引擎解决了这个问题。为了做到这一点,我必须卸载office365程序->安装access数据库引擎->重新安装office365。然后代码就可以完美地运行了!