python - PYODBC InterfaceError-找不到数据源名称
问题描述
我正在尝试使用 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)
根据错误,它没有找到数据源名称,所以我将“驱动程序”更改为“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文档,您需要设置一个 ODBC,您可以像这样检查它(正如@Parfait 所说);
import pyodbc
[x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
推荐阅读
- perl - 你怎么写 Perl 语句 $age = 25; 在 BNF 或 EBNF
- docker-ce - 更改默认 docker0 网桥 IP 地址
- asp.net-mvc - 如何解决此代码“requestContext.HttpContext.Request.Params”中的“从客户端检测到潜在危险的 Request.Form 值”
- python - 没有等待在硒中加载网站
- facebook - 使用 Graph API 将视频上传到 Facebook 页面 - RestFB
- rust - 奇怪的错误:不能在返回 `()` 的函数中使用 `?` 运算符
- c# - 从没有存储过程的 SQL Server 表生成 C# 类
- javascript - JavaScript 处理异步回调节点 .js
- angular - Angular 2 FormBuilder Group多个验证器
- javascript - 在 Highcharts 上显示单个图表