Может ли кто-нибудь указать мне в правильном направлении, как открыть файл .mdb в python? Обычно мне нравится включать некоторый код, чтобы начать обсуждение, но я не знаю, с чего начать. Я работаю с mysql с честным битом с python. Мне было интересно, есть ли способ работать с .mdb файлами аналогичным образом?
Как обращаться с файлами доступа .mdb с помощью python
Ответ 1
Ниже приведен код, который я написал для другого вопроса.
Требуется сторонний модуль 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)
Ответ 2
Это похоже на предыдущий вопрос:
- Что мне нужно для чтения баз данных Microsoft Access с помощью Python?
- http://code.activestate.com/recipes/528868-extraction-and-manipulation-class-for-microsoft-ac/
Ответ должен быть полезен.
Ответ 3
Есть меза-библиотека Реубена Каммингса, которая может читать базы данных 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
…
Ответ 4
В дополнение к ответу 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())
Ответ 5
Для решения, которое работает на любой платформе, которая может запускать Java, рассмотрите возможность использования Jython или JayDeBeApi вместе с UCanAccess Драйвер JDBC. Подробнее см. В соответствующем вопросе
Прочитайте базу данных Access на Python на платформе, отличной от Windows (Linux или Mac)