有人能给我指出如何在 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 驱动程序。详情请参阅相关问题

在非 Windows 平台(Linux 或 Mac)上用 Python 读取 Access 数据库

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top