Подтвердить что ты не робот

Что мне нужно для чтения баз данных Microsoft Access с помощью Python?

Как я могу получить доступ к базам данных Microsoft Access в Python? С SQL?

Я бы предпочел решение, которое работает с Linux, но я также могу согласиться на Windows.

Мне нужен только доступ для чтения.

4b9b3361

Ответ 1

Я использовал PYODBC для успешного подключения к базе данных MS Access - на Windows, хотя. Установка была простой, использование довольно простым, вам просто нужно установить правильную строку подключения (та, что для MS Access приведена в списке), и вы идете с примерами.

Ответ 2

В Linux, MDBTools - ваш единственный шанс на данный момент. [спорный]

В Windows вы можете обрабатывать файлы mdb с помощью pypyodbc.

Чтобы создать файл доступа mdb:

import pypyodbc
pypyodbc.win_create_mdb( "D:\\Your_MDB_file_path.mdb" )

Вот Hello World script, который полностью демонтирует функции поддержки доступа pypyodbc.

Отказ от ответственности: я разработчик pypyodbc.

Ответ 3

Как насчет pyodbc? Этот вопрос SO показывает, что можно читать MS Access, используя его.

Ответ 4

У вас есть то, что звучит как хорошие решения. Другой, который может быть немного ближе к "металу", чем вы хотите, - это инструменты MDB.

MDB Tools - это набор библиотек и утилит с открытым исходным кодом для облегчения экспорта данных из баз данных MS Access (файлы mdb) без использования Microsoft DLL, Таким образом, ОС не может считывать данные. Или, говоря иначе, они обращают инсталляцию макета файла MDB.

Также обратите внимание, что я сомневаюсь, что они начали работу над файлами ACCDB, и вряд ли будет много запросов для этой возможности.

Ответ 5

Старый вопрос, но я думал, что опубликую альтернативное предложение pypyodbc для Windows: ADO. Оказывается, очень легко получить доступ к базам данных Access, электронным таблицам Excel и всего остального с помощью современного (в отличие от старого ODBC) драйвера через COM.

Ознакомьтесь со следующими статьями:

Ответ 6

В Ubuntu 12.04 это было то, что я сделал, чтобы заставить его работать.

Установить pyodbc:

$ sudo apt-get install python-pyodbc

Следуйте указаниям по установке дополнительных драйверов:

$ sudo apt-get install mdbtools libmdbodbc1

Сделайте небольшую тестовую программу, которая соединяется с БД и отображает все таблицы:

import os
import pyodbc

db_path = os.path.join("path", "toyour", "db.mdb")
odbc_connection_str = 'DRIVER={MDBTools};DBQ=%s;' % (db_path)
connection = pyodbc.connect(odbc_connection_str)
cursor = connection.cursor()

query = "SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0"
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
    print row

Я надеюсь, что это помогло.

Ответ 7

Лично мне никогда не удавалось заставить MDB Tools (вместе со связанными вещами ODBC, такими как unixODBC) правильно работать с Python или PHP под Linux, даже после многочисленных попыток. Я только что попробовал инструкции в другом ответе на этот вопрос здесь, и все, что я получил, было "Ошибка сегментации (ядро сброшено)".

Однако я получил драйвер JDBC UCanAccess для чтения файлов .mdb и .accdb в Linux из Jython или CPython + JayDeBeApi. Для подробных инструкций о том, как я настроил это под Ubuntu 14.04 LTS, смотрите мой другой ответ здесь.

Ответ 8

Чтобы прочитать базу данных Access как pandas dataframe (Windows).

Это очень быстрое и простое решение, которое я успешно использовал для небольших баз данных.

Вы можете прочитать базу данных Access, установив постоянную ссылку на Excel и сохраняя этот файл (требуется несколько кликов), здесь:

https://support.office.com/en-gb/article/Connect-an-Access-database-to-your-workbook-a3d6500c-4bec-40ce-8cdf-fb4edb723525

Затем вы можете просто прочитать этот файл Excel как pandas dataframe.

Так, например, сохраните связанный файл Excel как "link_to_master.xlsx" в папке location\FileStore\subfolder1 \.

Запустите в python следующее:

import pandas as pd
import os
os.chdir('\\\\FileStore\\subfolder1\\subfolder') #sets the folder location
df = pd.read_excel('link_to_master.xlsx') # reads the Excel file
df

Рассмотрим частоту обновления ссылки, если вы повторно посещаете свой python script. то есть связь между Excel и Access статична.

Ответ 9

Скорее всего, вы захотите использовать хорошую инфраструктуру, например SQLAlchemy для доступа к своим данным или, по крайней мере, я бы рекомендовать его. Поддержка доступа является "экспериментальной", но я помню, что использовал ее без особых проблем. Он сам использует pyodbc под капотом, чтобы подключиться к Access dbs, поэтому он должен работать из окон, linux, os x и whatnot.

Ответ 10

Если вы синхронизируете свою базу данных в Интернете с помощью EQL Data, вы можете запросить содержимое своих таблиц доступа с помощью JSON или YAML: http://eqldata.com/kb/1002.

В этой статье речь идет о PHP, но она будет работать так же хорошо и в Python.