题
有人能给我指出如何在 python 中打开 .mdb 文件的正确方向吗?我通常喜欢包含一些代码来开始讨论,但我不知道从哪里开始。我使用 mysql 和 python 进行了相当多的工作。我想知道是否有一种方法可以以类似的方式处理 .mdb 文件?
解决方案
下面是一些代码我写另一个SO问题。结果 它需要第三方 pyodbc模块。
这个非常简单的例子将连接到一个表和结果导出到文件。结果 随意在你的问题与你可能有任何更具体的需求扩大。
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)
其他提示
有的是 鲁本·卡明斯 (Reuben Cummings) 设计的 meza 图书馆 它可以通过读取 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
…
在除了伯尼的响应,我要补充说有可能恢复该数据库的模式。下面列出的代码表(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 或者 杰·德比·阿皮 随着 UCanAccess JDBC 驱动程序。详情请参阅相关问题
不隶属于 StackOverflow