【发布时间】:2011-04-06 22:32:37
【问题描述】:
有人可以为我指出如何在 python 中打开 .mdb 文件的正确方向吗?我通常喜欢包含一些代码来开始讨论,但我不知道从哪里开始。我用 mysql 和 python 一起工作。我想知道是否有办法以类似的方式处理 .mdb 文件?
【问题讨论】:
有人可以为我指出如何在 python 中打开 .mdb 文件的正确方向吗?我通常喜欢包含一些代码来开始讨论,但我不知道从哪里开始。我用 mysql 和 python 一起工作。我想知道是否有办法以类似的方式处理 .mdb 文件?
【问题讨论】:
下面是我为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', 'w') as fou:
csv_writer = csv.writer(fou) # default field-delimiter is ","
csv_writer.writerows(rows)
【讨论】:
'wb' 更改为 'w'。答案已编辑。
Microsoft Access Driver (*.mdb, *.accdb)。
除了 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())
【讨论】:
对于适用于任何可运行 Java 的平台的解决方案,请考虑使用 Jython 或 JayDeBeApi 以及 UCanAccess JDBC 驱动程序。详情见相关问题
Read an Access database in Python on non-Windows platform (Linux or Mac)
【讨论】:
还有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
…
【讨论】:
此代码会将所有表格转换为 CSV。
快乐编码
for tbl in mdb.list_tables("file_name.MDB"):
df = mdb.read_table("file_name.MDB", tbl)
df.to_csv(tbl+'.csv')
【讨论】:
import mdb 或mdb = ... 之类的行,此代码sn-p 非常不清楚...
import pandas_access as mdb 更多信息:# pypi.org/project/pandas_access - plugin # pydigger.com/pypi/pandas_access - ***