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

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

我会优先考虑一个适用于Linux的解决scheme,但我也可以适应Windows。

我只需要读取权限。

我已经使用PYODBC成功连接到MS Access数据库 – 在Windows上。 安装很简单,用法相当简单,你只需要设置正确的连接string(MS Access的一个在列表中给出)和你去的例子。

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

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

创build一个Access mdb文件:

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

这是一个Hello World脚本 ,完全解除了pypyodbc的Access支持function。

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

如何pyodbc ? 这个问题表明可以使用它读取MS Access。

你有听起来像一些很好的解决scheme。 另一个比你想要的更接近“金属”的是MDB Tools。

MDB工具是一组开源的库和实用程序,以方便从MS Access数据库(mdb文件)导出数据,而无需使用Microsoft DLL。 因此非Windows操作系统可以读取数据。 或者,换句话说,他们是逆向工程的MDB文件的布局。

另外请注意,我怀疑他们已经开始处理ACCDB文件,可能不会有太多的要求。

老问题,但我想我会发布一个pypyodbc替代Windows的build议:ADO。 事实certificate,通过COM访问Access数据库,Excel电子表格和其他任何具有现代(而不是老式的ODBC)驱动程序的东西是非常容易的。

看看下面的文章:

最有可能的是,你会希望使用像SQLAlchemy这样的好框架来访问你的数据,或者至less我会推荐它。 对Access的支持是“实验性的”,但我记得使用它没有太多的问题。 它本身使用引擎盖下的pyodbc来连接到Access dbs,所以它应该可以从windows,linux,os x和其他软件上运行。

在Ubuntu 12.04上,我做了这个工作。

安装pyodbc:

 $ sudo apt-get install python-pyodbc 

按照安装一些额外的驱动程序:

 $ sudo apt-get install mdbtools libmdbodbc1 

制作一个连接到数据库并显示所有表的小testing程序:

 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 

我希望它有帮助。

就我个人而言,即使经过多次尝试,我也从来没有能够获得MDB工具(以及相关的ODBC工具,如unixODBC),以便在Linux下正确使用Python或PHP。 我只是尝试了这个问题的其他答案的指示,我得到的是“分段错误(核心转储)”。

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

将Access数据库读取为pandas数据框(Windows)。

这是一个非常快速和简单的解决scheme,我成功地用于小型数据库。

您可以通过永久链接到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 \子文件夹中的“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之间的链接是静态的。

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

那篇文章是关于PHP的,但是它在Python中也会起作用。

如果您有一些空闲时间,可以尝试修复和更新这个通过本机COM32客户端API读取MS-Access数据库的python类: Microsoft Access的提取和操作类

在Windows下将Python 连接到MS Access的方式是使用这种方法: 使用Python连接到MS Access 。 也许你可以在Win 7上find一些麻烦,所以我find了一个解决scheme: 在Windows 7上解决MS Access和Python之间的连接

我没有尝试在Linux下连接!