繁体   English   中英

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

[英]What do I need to read Microsoft Access databases using Python?

如何使用Python访问Microsoft Access数据库? 用SQL吗?

我希望可以在Linux上使用的解决方案,但也可以选择Windows。

我只需要读取权限。

在Linux上,到目前为止,您仅有的机会就是MDBTools。 [争议]

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

要创建Access mdb文件:

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

这是一个Hello World脚本 ,该脚本完全降低了pypyodbc的Access支持功能。

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

不过,我已经使用PYODBC成功连接到Windows上的MS Access数据库。 安装很容易,用法也很简单,您只需要设置正确的连接字符串(列表中提供了用于MS Access的连接字符串),然后使用示例。

pyodbc怎么样? 这个SO问题说明可以使用它来读取MS Access。

您有听起来不错的解决方案。 MDB工具是另一个可能比您更接近“金属”的工具。

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

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

旧问题,但我想我会为Windows发布pypyodbc替代建议:ADO。 事实证明,通过COM使用现代(相对于老式ODBC)驱动程序来访问Access数据库,Excel电子表格和其他任何东西确实很容易。

查看以下文章:

在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

希望对您有所帮助。

就个人而言,即使经过多次尝试,我也无法使MDB工具(以及相关的ODBC东西(如unixODBC)与Linux上的Python或PHP一起正常使用。 我只是在这里尝试了该问题的其他答案中的指示,而我得到的只是“分段错误(核心已转储)”。

但是,我确实获得了UCanAccess JDBC驱动程序,以从Jython或CPython + JayDeBeApi读取Linux上的.mdb和.accdb文件。 有关如何在Ubuntu 14.04 LTS下进行设置的详细说明,请参见此处的其他答案。

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

这是一个非常快速,简便的解决方案,已成功用于较小的数据库。

您可以通过建立指向Excel的永久链接并保存该文件(只需单击几下)来读取Access数据库,请在此处链接:

https://support.office.com/zh-CN/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之间的链接是静态的。

最有可能的是,您需要使用类似SQLAlchemy的框架来访问数据,或者至少我会推荐它。 对Access的支持是“实验性的”,但我记得使用它没有太多问题。 它本身使用引擎盖下的pyodbc连接到Access dbs,因此它应该可以在Windows,Linux,OS X和其他操作系统上运行。

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

我在Windows下将Python 连接到MS Access的方法是使用以下方法: 使用Python连接到MS Access 也许您会在Win 7上发现一些麻烦,所以我找到了解决方案: 解决Windows 7上MS Access和Python之间的连接

我没有尝试在Linux下连接!

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

那篇文章是关于PHP的,但是在Python中也一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM