如何使用python处理.mdb访问文件

时间:2010-09-01 17:17:45

标签: python ms-access

有人能指出我如何在python中打开.mdb文件吗?我通常喜欢包含一些代码来开始讨论,但我不知道从哪里开始。我使用python使用mysql。我想知道是否有办法以类似的方式使用.mdb文件?

6 个答案:

答案 0 :(得分:45)

以下是我为another SO question撰写的一些代码 它需要第三方pyodbc module

这个非常简单的示例将连接到表并将结果导出到文件中 如果您有任何更具体的需求,请随意扩展您的问题。

import csv, pyodbc

# set up some constants
MDB = 'c:/path/to/my.mdb'
DRV = '{Microsoft Access Driver (*.mdb)}'
PWD = 'pw'

# connect to db
con = pyodbc.connect('DRIVER={};DBQ={};PWD={}'.format(DRV,MDB,PWD))
cur = con.cursor()

# run a query and get the results 
SQL = 'SELECT * FROM mytable;' # your query goes here
rows = cur.execute(SQL).fetchall()
cur.close()
con.close()

# you could change the mode from 'w' to 'a' (append) for any subsequent queries
with open('mytable.csv', 'wb') as fou:
    csv_writer = csv.writer(fou) # default field-delimiter is ","
    csv_writer.writerows(rows)

答案 1 :(得分:4)

答案 2 :(得分:3)

meza library by Reuben Cummings可以通过mdbtools读取Microsoft Access数据库。

安装

# The mdbtools package for Python deals with MongoDB, not MS Access. 
# So install the package through `apt` if you're on Debian/Ubuntu
$ sudo apt install mdbtools
$ pip install meza

用法

>>> from meza import io

>>> records = io.read('database.mdb') # only file path, no file objects
>>> print(next(records))

Table1
Table2
…

答案 3 :(得分:1)

除了bernie的回复之外,我还想补充说可以恢复数据库的模式。下面的代码列出了表格(b [2]包含表格的名称)。

con = pyodbc.connect('DRIVER={};DBQ={};PWD={}'.format(DRV,MDB,PWD))
cur = con.cursor()

tables = list(cur.tables())

print 'tables'
for b in tables:
    print b

下面的代码列出了所有表格中的所有列:

colDesc = list(cur.columns())

答案 4 :(得分:1)

对于可在任何可运行Java的平台上运行的解决方案,请考虑使用JythonJayDeBeApi以及UCanAccess JDBC驱动程序。有关详细信息,请参阅相关问题

Read an Access database in Python on non-Windows platform (Linux or Mac)

答案 5 :(得分:0)

此代码会将所有表格转换为CSV。

快乐编码

for tbl in mdb.list_tables("file_name.MDB"):
    df = mdb.read_table("file_name.MDB", tbl)
    df.to_csv(tbl+'.csv')