我需要使用 Python 读取 Microsoft Access 数据库吗?

2024-10-17 08:47:00
admin
原创
187
摘要:问题描述:如何使用 Python 访问 Microsoft Access 数据库?使用 SQL?我更喜欢适用于 Linux 的解决方案,但我也可以接受 Windows。我只需要读取权限。解决方案 1:在 Linux 上,MDBTools 是你现在唯一的机会。[有争议]在 Windows 上,您可以使用 pyp...

问题描述:

如何使用 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 数据库,链接如下:

https://support.office.com/en-gb/article/Connect-an-Access-database-to-your-workbook-a3d6500c-4bec-40ce-8cdf-fb4edb723525

然后,您可以简单地将该 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下连接!

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1142  
  IPD(Integrated Product Development,集成产品开发)流程是一种广泛应用于高科技和制造业的产品开发方法论。它通过跨职能团队的紧密协作,将产品开发周期缩短,同时提高产品质量和市场成功率。在IPD流程中,CDCP(Concept Decision Checkpoint,概念决策检查点)是一个关...
IPD培训课程   96  
  研发IPD(集成产品开发)流程作为一种系统化的产品开发方法,已经在许多行业中得到广泛应用。它不仅能够提升产品开发的效率和质量,还能够通过优化流程和资源分配,显著提高客户满意度。客户满意度是企业长期成功的关键因素之一,而IPD流程通过其独特的结构和机制,能够确保产品从概念到市场交付的每个环节都围绕客户需求展开。本文将深入...
IPD流程   87  
  IPD(Integrated Product Development,集成产品开发)流程是一种以跨职能团队协作为核心的产品开发方法,旨在通过优化资源分配、提高沟通效率以及减少返工,从而缩短项目周期并提升产品质量。随着企业对产品上市速度的要求越来越高,IPD流程的应用价值愈发凸显。通过整合产品开发过程中的各个环节,IPD...
IPD项目管理咨询   95  
  跨部门沟通是企业运营中不可或缺的一环,尤其在复杂的产品开发过程中,不同部门之间的协作效率直接影响项目的成败。集成产品开发(IPD)作为一种系统化的项目管理方法,旨在通过优化流程和增强团队协作来提升产品开发的效率和质量。然而,跨部门沟通的复杂性往往成为IPD实施中的一大挑战。部门之间的目标差异、信息不对称以及沟通渠道不畅...
IPD是什么意思   92  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用