如何在Python中访问Microsoft Access数据库?用SQL?
我会优先考虑适用于Linux的解决方案,但我也可以选择Windows。
我只需要读取权限。
答案 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数据库(只需点击几下),请点击此处链接:
然后,您可以将该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下连接!