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

Geo*_*lly 33 python linux ms-access python-module

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

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

我只需要读访问权限.

pyp*_*dbc 29

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

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

要创建Access mdb文件:

import pypyodbc
pypyodbc.win_create_mdb( "D:\\Your_MDB_file_path.mdb" )
Run Code Online (Sandbox Code Playgroud)

这是一个Hello World脚本,完全演示了pypyodbc的Access支持功能.

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


Ale*_*ans 23

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

  • 注意这个问题陈述linux,你礼貌地提到了windows.linux(来自pyodbc开发)的正确答案在http://stackoverflow.com/a/15400363/638649下面 (6认同)

stu*_*rtd 10

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


Ton*_*ews 9

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

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

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


Men*_*nda 5

在 Ubuntu 12.04 上,我就是这样做的。

安装pyodbc:

$ sudo apt-get install python-pyodbc
Run Code Online (Sandbox Code Playgroud)

继续安装一些额外的驱动程序:

$ sudo apt-get install mdbtools libmdbodbc1
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助。

  • @MartinThøgersen 我相信它被称为“odbc-mdbtools”(s 在末尾) (2认同)