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