как бороться с файлами доступа .mdb с помощью python - PullRequest
38 голосов
/ 01 сентября 2010

Может кто-нибудь указать мне правильное направление, как открыть файл .mdb в python? Мне обычно нравится включать некоторый код, чтобы начать обсуждение, но я не знаю, с чего начать. Я работаю с MySQL честно с Python. Мне было интересно, есть ли способ работать с файлами .mdb подобным образом?

Ответы [ 5 ]

45 голосов
/ 02 сентября 2010

Ниже приведен код, который я написал для другой вопрос 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)
4 голосов
/ 01 сентября 2010
3 голосов
/ 05 марта 2017

Имеется меза-библиотека Рубена Каммингса , которая может читать базы данных Microsoft Access через mdbtools .

Установка

# 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
…
1 голос
/ 12 ноября 2015

Для решения, которое работает на любой платформе, поддерживающей Java, рассмотрите возможность использования Jython или JayDeBeApi вместе с драйвером JDBC UCanAccess . Подробнее см. Соответствующий вопрос

Чтение базы данных Access в Python на платформе, отличной от Windows (Linux или Mac)

1 голос
/ 11 ноября 2015

В дополнение к ответу Берни я бы добавил, что возможно восстановить схему базы данных.В приведенном ниже коде перечислены таблицы (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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...