[英]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的连接字符串),然后使用示例。
您有听起来不错的解决方案。 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数据库,请在此处链接:
然后,您可以简单地将该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.