PYODBC InterfaceError - 未找到数据源名称
PYODBC InterfaceError- Data source name not found
我正在尝试使用 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 数据库真的很有帮助。
提前致谢!
根据 pyodbc docs 你需要设置一个 ODBC 并且你可以像这样检查它(如@Parfait 所说);
import pyodbc
[x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
如果 Office 365 安装为 "Click-to-Run" (C2R),则某些 Office 组件存储在非 Office 应用程序不可见的 "isolated environment" 中。 Access 数据库引擎是这些组件之一。
在这种情况下,从外部(非 Office)应用程序使用 Access 数据库引擎的解决方案是下载并安装 Access 数据库引擎可再发行组件包,如 Microsoft Docs 文章中所述:
Can't use the Access ODBC driver or OLEDB provider outside Office Click-to-Run applications
我已经通过安装 Access 数据库引擎解决了这个问题。为此,我不得不卸载 office365 程序-> 安装访问数据库引擎-> 重新安装 office365。然后代码完美运行!
在 Microsoft website 上安装访问驱动程序对我有用。
在安装驱动程序之前我还得到了一个InterfaceError
和运行
import pyodbc
[x for x in pyodbc.drivers() if x.startswith("Microsoft Access Driver")]
生成了一个空列表 []
。
安装驱动程序(x64 版本)后,它出现在上面代码的列表中,调用 conn.cursor()
不再产生错误:
import pyodbc
[x for x in pyodbc.drivers() if x.startswith("Microsoft Access Driver")]
Out[1]: ['Microsoft Access Driver (*.mdb, *.accdb)']
我正在尝试使用 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 数据库真的很有帮助。 提前致谢!
根据 pyodbc docs 你需要设置一个 ODBC 并且你可以像这样检查它(如@Parfait 所说);
import pyodbc
[x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
如果 Office 365 安装为 "Click-to-Run" (C2R),则某些 Office 组件存储在非 Office 应用程序不可见的 "isolated environment" 中。 Access 数据库引擎是这些组件之一。
在这种情况下,从外部(非 Office)应用程序使用 Access 数据库引擎的解决方案是下载并安装 Access 数据库引擎可再发行组件包,如 Microsoft Docs 文章中所述:
Can't use the Access ODBC driver or OLEDB provider outside Office Click-to-Run applications
我已经通过安装 Access 数据库引擎解决了这个问题。为此,我不得不卸载 office365 程序-> 安装访问数据库引擎-> 重新安装 office365。然后代码完美运行!
在 Microsoft website 上安装访问驱动程序对我有用。
在安装驱动程序之前我还得到了一个InterfaceError
和运行
import pyodbc
[x for x in pyodbc.drivers() if x.startswith("Microsoft Access Driver")]
生成了一个空列表 []
。
安装驱动程序(x64 版本)后,它出现在上面代码的列表中,调用 conn.cursor()
不再产生错误:
import pyodbc
[x for x in pyodbc.drivers() if x.startswith("Microsoft Access Driver")]
Out[1]: ['Microsoft Access Driver (*.mdb, *.accdb)']