python-3.x - 使用 Python 3.7 阅读 MS Access
问题描述
我已经在线阅读了一百页关于如何将遗留的 MS Access 数据库连接到 Python,但一切似乎都过时了。我正在使用带有 SQLAlchemy 和 PyODBC 的 Python 3.7 64 位,但 SQLAlchemy 不再支持 MS Access,我无法让任何代码工作。最近有人用现代版的 Python 连接到 Access 吗?这是我的代码不起作用。
import pyodbc
connStr = (
r"DRIVER={Microsoft Access Driver (*.accdb)}; DBQ=E:\db\Records.accdb; Uid=Admin; Pwd=;"
)
conn = pyodbc.connect(connStr)
cursor = conn.cursor()
cursor.execute('select * from Students')
for row in cursor.fetchall():
print(row)
错误:
回溯(最后一次调用):文件“G:/Projects/AccessTest/accessdb.py”,第 7 行,在 conn = pyodbc.connect(connStr) pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft] [ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序 (0) (SQLDriverConnect)')
解决方案
添加了来自 MS 的两个 32 位驱动程序,并创建了一个捷径(因为现有的只是转到 64 或 32,无论您的操作系统是什么)。然后我能够设置一个 ODBC 源,PyODBC 连接得很好。在相关说明中,我在 64 位 Windows Server 上使用 XAMPP 时遇到了同样的问题,安装额外的 MS 驱动程序也解决了这个问题。
这是使用 MS 安装程序安装 32 位驱动程序的位置。显然不是第一个。
C:\Windows\SysWOW64\odbcad32.exe
推荐阅读
- python - 使用 pydub 的 AudioSegment.from_mp3 方法时出错
- c++ - 有没有比在基于数组的队列实现中向左移动元素更好的算法
- clang - 如何使用 Clang Static Checker 检测所有缓冲区访问
- c# - 如何从它的 BaseClass 函数中调用所有同名的 DerivedClass 对象函数?
- reactjs - 在反应中显示一组项目无法正常工作
- jmeter - 如何在 Jmeter 中打开网络端口并等待应用服务器的响应
- android - 使用 Firebase Analytics 跟踪在特定时间之前或之后卸载的应用
- ios - 无法安装“phonegap-plugin-push”:未定义的 CordovaError
- javascript - jQuery斜体选择问题
- eclipse - “未找到 ID 为 'org.xtext.xtend' 的插件。” 错误