Что мне нужно для чтения баз данных Microsoft Access с использованием Python? - PullRequest
33 голосов
/ 12 мая 2009

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

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

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

Ответы [ 12 ]

29 голосов
/ 14 марта 2013

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

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

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

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

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

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

23 голосов
/ 13 мая 2009

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

10 голосов
/ 12 мая 2009

Как насчет pyodbc ? Этот вопрос SO демонстрирует, что с его помощью можно читать MS Access.

9 голосов
/ 13 мая 2009

У вас есть то, что звучит как хорошие решения. Еще один инструмент, который может быть немного ближе к «металлу», чем вам хотелось бы, - это MDB Tools.

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

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

3 голосов
/ 10 августа 2013

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

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

2 голосов
/ 07 декабря 2016

Для чтения базы данных Access в виде кадра данных pandas (Windows).

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

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

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

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

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

Запустите следующее на 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. т.е. связь между Excel и Access является статической.

2 голосов
/ 11 сентября 2014

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

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

2 голосов
/ 07 июня 2014

В 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

Надеюсь, это помогло.

1 голос
/ 12 мая 2009

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

0 голосов
/ 29 ноября 2016

Способ подключения Python к MS Access под Windows заключается в следующем: Подключение к MS Access с Python . Может быть, вы можете найти некоторые проблемы на Win 7, поэтому я нашел решение: Решение соединения между MS Access и Python на Windows 7

Я не пробовал подключаться под Linux!

...