使用Python阅读Microsoft Access数据库需要什么?

时间:2009-05-12 15:29:24

标签: python linux ms-access python-module

如何在Python中访问Microsoft Access数据库?用SQL?

我会优先考虑适用于Linux的解决方案,但我也可以选择Windows。

我只需要读取权限。

12 个答案:

答案 0 :(得分:29)

在Linux上,MDBTools是你现在唯一的机会。 [disputed]

在Windows上,您可以使用pypyodbc处理mdb文件。

创建Access mdb文件:

import pypyodbc
pypyodbc.win_create_mdb( "D:\\Your_MDB_file_path.mdb" )

Here is an Hello World script完全展示了pypyodbc的Access支持功能。

免责声明:我是pypyodbc的开发者。

答案 1 :(得分:22)

我已经使用PYODBC成功连接到MS Access数据库 - 在Windows上 。安装很简单,用法非常简单,您只需要设置正确的连接字符串(列表中给出了MS Access的连接字符串),然后再使用示例。

答案 2 :(得分:10)

pyodbc怎么样? This SO question演示了使用它读取MS Access的可能性。

答案 3 :(得分:9)

你听到了一些好的解决方案。另一个可能比你想要的更接近“金属”的是MDB Tools。

MDB Tools是一组开源库和实用程序,可以在不使用Microsoft DLL的情况下从MS Access数据库(mdb文件)导出数据。因此,非Windows操作系统可以读取数据。或者,换句话说,他们正在对MDB文件的布局进行逆向工程。

另请注意,我怀疑他们是否已开始处理ACCDB文件,并且可能不会对该功能提出太多要求。

答案 4 :(得分:3)

老问题,但我想我会发布针对Windows的pypyodbc替代建议:ADO。事实证明,通过COM可以轻松获得Access数据库,Excel电子表格以及其他任何带有现代(而不是旧式ODBC)驱动程序的驱动程序。

查看以下文章:

答案 5 :(得分:2)

在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 :(得分:2)

就我个人而言,即使经过多次尝试,我也无法在Linux下使用MDB工具(以及像unixODBC这样的相关ODBC工具)与Python或PHP一起正常工作。我只是尝试了这个问题here的另一个答案中的说明,而我得到的只是“分段错误(核心转储)”。

但是,我确实得到了Jython和UCanAccess JDBC驱动程序来读取Linux上的.mdb和.accdb文件。有关如何在Ubuntu 14.04 LTS下进行设置的详细说明,请参阅我的其他答案here

答案 7 :(得分:2)

将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文件保存为' link_to_master.xlsx'在location \ FileStore \ subfolder1 \ subfolder。

在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之间的链接是静态的。

答案 8 :(得分:1)

最有可能的是,您需要使用像SQLAlchemy这样的漂亮框架来访问您的数据,或者至少我会推荐它。 Support for Access是“实验性的”,但我记得在没有太多问题的情况下使用它。它本身使用引擎盖下的pyodbc来连接到Access dbs,因此它应该可以在windows,linux,os x等等工作。

答案 9 :(得分:0)

如果使用EQL Data将数据库同步到网络,则可以使用JSON或YAML查询Access表的内容:http://eqldata.com/kb/1002

那篇文章是关于PHP的,但它在Python中也可以正常工作。

答案 10 :(得分:0)

如果你有空闲时间,你可以尝试修复和更新这个通过本机COM32客户端API读取MS-Access数据库的python类:Extraction and manipulation class for Microsoft Access

答案 11 :(得分:0)

我在Windows下将Python连接到MS Access的方式是使用这种方式:Connect to MS Access with Python。 也许你可以在Win 7上找到一些麻烦,所以我找到了一个解决方案:Solving a connection between MS Access and Python on Windows 7

我没有尝试在Linux下连接!