有人能指出我如何在python中打开.mdb文件吗?我通常喜欢包含一些代码来开始讨论,但我不知道从哪里开始。我使用python使用mysql。我想知道是否有办法以类似的方式使用.mdb文件?
答案 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的平台上运行的解决方案,请考虑使用Jython或JayDeBeApi以及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')