Как я могу получить доступ к базам данных Microsoft Access в Python? С SQL?
Я бы предпочел решение, которое работает с Linux, но я также могу согласиться на Windows.
Мне нужен только доступ для чтения.
Как я могу получить доступ к базам данных Microsoft Access в Python? С SQL?
Я бы предпочел решение, которое работает с Linux, но я также могу согласиться на Windows.
Мне нужен только доступ для чтения.
Я использовал PYODBC для успешного подключения к базе данных MS Access - на Windows, хотя. Установка была простой, использование довольно простым, вам просто нужно установить правильную строку подключения (та, что для MS Access приведена в списке), и вы идете с примерами.
В Linux, MDBTools - ваш единственный шанс на данный момент. [спорный]
В Windows вы можете обрабатывать файлы mdb с помощью pypyodbc.
Чтобы создать файл доступа mdb:
import pypyodbc
pypyodbc.win_create_mdb( "D:\\Your_MDB_file_path.mdb" )
Вот Hello World script, который полностью демонтирует функции поддержки доступа pypyodbc.
Отказ от ответственности: я разработчик pypyodbc.
Как насчет pyodbc? Этот вопрос SO показывает, что можно читать MS Access, используя его.
У вас есть то, что звучит как хорошие решения. Другой, который может быть немного ближе к "металу", чем вы хотите, - это инструменты MDB.
MDB Tools - это набор библиотек и утилит с открытым исходным кодом для облегчения экспорта данных из баз данных MS Access (файлы mdb) без использования Microsoft DLL, Таким образом, ОС не может считывать данные. Или, говоря иначе, они обращают инсталляцию макета файла MDB.
Также обратите внимание, что я сомневаюсь, что они начали работу над файлами ACCDB, и вряд ли будет много запросов для этой возможности.
Старый вопрос, но я думал, что опубликую альтернативное предложение pypyodbc для Windows: ADO. Оказывается, очень легко получить доступ к базам данных Access, электронным таблицам Excel и всего остального с помощью современного (в отличие от старого ODBC) драйвера через COM.
Ознакомьтесь со следующими статьями:
В 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
Я надеюсь, что это помогло.
Лично мне никогда не удавалось заставить MDB Tools (вместе со связанными вещами ODBC, такими как unixODBC) правильно работать с Python или PHP под Linux, даже после многочисленных попыток. Я только что попробовал инструкции в другом ответе на этот вопрос здесь, и все, что я получил, было "Ошибка сегментации (ядро сброшено)".
Однако я получил драйвер JDBC UCanAccess для чтения файлов .mdb и .accdb в Linux из Jython или CPython + JayDeBeApi. Для подробных инструкций о том, как я настроил это под Ubuntu 14.04 LTS, смотрите мой другой ответ здесь.
Чтобы прочитать базу данных Access как pandas dataframe (Windows).
Это очень быстрое и простое решение, которое я успешно использовал для небольших баз данных.
Вы можете прочитать базу данных Access, установив постоянную ссылку на Excel и сохраняя этот файл (требуется несколько кликов), здесь:
Затем вы можете просто прочитать этот файл 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 статична.
Скорее всего, вы захотите использовать хорошую инфраструктуру, например SQLAlchemy для доступа к своим данным или, по крайней мере, я бы рекомендовать его. Поддержка доступа является "экспериментальной", но я помню, что использовал ее без особых проблем. Он сам использует pyodbc под капотом, чтобы подключиться к Access dbs, поэтому он должен работать из окон, linux, os x и whatnot.
Если вы синхронизируете свою базу данных в Интернете с помощью EQL Data, вы можете запросить содержимое своих таблиц доступа с помощью JSON или YAML: http://eqldata.com/kb/1002.
В этой статье речь идет о PHP, но она будет работать так же хорошо и в Python.
Если у вас есть время на запас, вы можете попытаться исправить и обновить этот класс python, который считывает базы данных MS-Access через собственный API-интерфейс COM32-клиента: Класс извлечения и манипуляции для Microsoft Access
То, как я подключаю Python к MS Access под Windows, используется следующим образом: Подключиться к MS Access с помощью Python. Возможно, вы можете найти некоторые проблемы с Win 7, поэтому я нашел решение: Решение соединения между MS Access и Python в Windows 7
Я не пробовал подключаться под Linux!