我需要使用 Python 读取 Microsoft Access 数据库吗?
- 2024-10-17 08:47:00
- admin 原创
- 75
问题描述:
如何使用 Python 访问 Microsoft Access 数据库?使用 SQL?
我更喜欢适用于 Linux 的解决方案,但我也可以接受 Windows。
我只需要读取权限。
解决方案 1:
在 Linux 上,MDBTools 是你现在唯一的机会。[有争议]
在 Windows 上,您可以使用 pypyodbc 处理 mdb 文件。
要创建 Access mdb 文件:
import pypyodbc
pypyodbc.win_create_mdb( "D:\\Your_MDB_file_path.mdb" )
这是一个 Hello World 脚本,完整演示了 pypyodbc 的 Access 支持功能。
免责声明:我是 pypyodbc 的开发人员。
解决方案 2:
我已经使用PYODBC成功连接到 MS Access 数据库 -在 Windows 上。安装很容易,使用也相当简单,您只需设置正确的连接字符串(列表中给出了 MS Access 的连接字符串),然后就可以开始使用示例了。
解决方案 3:
您已经找到了一些听起来不错的解决方案。另一个可能比您想象的更接近“实际”的解决方案是 MDB 工具。
MDB 工具是一组开源库和实用程序,用于帮助从 MS Access 数据库(mdb 文件)导出数据,而无需使用 Microsoft DLL。因此非 Windows 操作系统可以读取数据。或者,换句话说,它们正在对 MDB 文件的布局进行逆向工程。
还请注意,我怀疑他们是否已经开始研究 ACCDB 文件,并且对该功能的需求可能不会太多。
解决方案 4:
pyodbc怎么样?这个 SO 问题表明可以使用它来读取 MS Access。
解决方案 5:
在 Ubuntu 12.04 上,我按照以下步骤使其工作。
安装 pyodbc:
$ sudo apt-get install python-pyodbc
继续安装一些额外的驱动程序:
$ sudo apt-get install mdbtools libmdbodbc1
制作一个连接到数据库并显示所有表的小测试程序:
import os
import pyodbc
db_path = os.path.join("path", "toyour", "db.mdb")
odbc_connection_str = 'DRIVER={MDBTools};DBQ=%s;' % (db_path)
connection = pyodbc.connect(odbc_connection_str)
cursor = connection.cursor()
query = "SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0"
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
print row
我希望它有所帮助。
解决方案 6:
老问题了,但我想发布一个适用于 Windows 的 pypyodbc 替代建议:ADO。事实证明,通过 COM 使用现代(而不是老式 ODBC)驱动程序确实很容易访问 Access 数据库、Excel 电子表格和其他任何东西。
请查看以下文章:
解决方案 7:
就我个人而言,我尝试了很多次,但还是没能使 MDB Tools(以及相关的 ODBC 内容,如 unixODBC)在 Linux 下与 Python 或 PHP 正常配合使用。我刚刚尝试了此处此问题的另一个答案中的说明,但得到的只是“分段错误(核心转储)”。
但是,我确实让UCanAccess JDBC 驱动程序从 Jython 或 CPython+JayDeBeApi 读取 Linux 上的 .mdb 和 .accdb 文件。有关如何在 Ubuntu 14.04 LTS 下进行设置的详细说明,请参阅此处的其他回答。
解决方案 8:
最有可能的是,您会想要使用像SQLAlchemy这样的优秀框架来访问您的数据,或者至少我会推荐它。对 Access 的支持是“实验性的”,但我记得使用它时没有太多问题。它本身在底层使用pyodbc连接到 Access dbs,因此它应该可以在 Windows、Linux、OS X 等平台上工作。
解决方案 9:
将 Access 数据库读取为 pandas 数据框(Windows)。
这是一个非常快速且简单的解决方案,我已经成功用于较小的数据库。
您可以通过建立与 Excel 的永久链接并保存该文件(只需单击几下)来读取 Access 数据库,链接如下:
然后,您可以简单地将该 Excel 文件读取为 pandas 数据框。
因此,例如,将链接的 Excel 文件保存为位置 \FileStore\subfolder1\subfolder 中的“link_to_master.xlsx”。
在 python 中运行以下命令:
import pandas as pd
import os
os.chdir('\\\\FileStore\\subfolder1\\subfolder') #sets the folder location
df = pd.read_excel('link_to_master.xlsx') # reads the Excel file
df
如果您重新访问您的 python 脚本,请考虑链接刷新的频率。即 Excel 和 Access 之间的链接是静态的。
解决方案 10:
如果您使用EQL 数据将数据库同步到网络,那么您可以使用 JSON 或 YAML 查询 Access 表的内容:http ://eqldata.com/kb/1002 。
该文章是关于 PHP 的,但它在 Python 中也同样适用。
解决方案 11:
如果你有时间,可以尝试修复和更新这个通过本机 COM32 客户端 API 读取 MS-Access DB 的 python 类:Microsoft Access 的提取和操作类
解决方案 12:
我在 Windows 下使用这种方式将 Python 连接到 MS Access:使用 Python 连接到 MS Access。也许你会在 Win 7 上遇到一些问题,所以我找到了一个解决方案:解决 Windows 7 上 MS Access 和 Python 之间的连接
我还没有尝试过在Linux下连接!
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件