Czego potrzebuję do odczytu baz danych Microsoft Access przy użyciu Pythona?
Jak mogę uzyskać dostęp do baz danych Microsoft Access w Pythonie? Z SQL?
Wolałbym rozwiązanie, które działa z Linuksem, ale mógłbym też zadowolić się Windowsem.
Wymagam tylko dostępu do odczytu.
12 answers
Użyłem PYODBC aby pomyślnie połączyć się z MS Access db - na Windows. Instalacja była łatwa, użycie jest dość proste, wystarczy ustawić odpowiedni ciąg połączenia (Ten dla MS Access jest podany na liście) i przejść z przykładami.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-24 12:06:48
W Linuksie MDBTools jest twoją jedyną szansą. [sporne]
W systemie Windows możesz obsługiwać pliki mdb za pomocą pypyodbc.
Aby utworzyć plik Access mdb:
import pypyodbc
pypyodbc.win_create_mdb( "D:\\Your_MDB_file_path.mdb" )
Oto skrypt Hello World , który w pełni demonstruje funkcje obsługi dostępu pypyodbc.
Zastrzeżenie: jestem twórcą pypyodbc.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:05
A może pyodbc ? to pytanie pokazuje, że można z niego odczytać MS Access.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:39
Masz coś, co brzmi jak dobre rozwiązania. Innym, który może być nieco bliżej "metalu", niż byś chciał, jest MDB Tools.
MDB Tools jest zestawem bibliotek open source i narzędzi ułatwiających eksport danych z baz danych MS Access (pliki mdb) bez korzystania z bibliotek DLL firmy Microsoft. W ten sposób nie Windows OSs może odczytać dane. Lub, mówiąc inaczej, są one inżynierii odwrotnej układu pliku MDB.
Zauważ również, że wątpię, aby zaczęli praca na plikach ACCDB i prawdopodobnie nie będzie wiele żądań dla tej możliwości.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-13 02:32:10
Stare pytanie, ale pomyślałem, że wrzucę alternatywną propozycję pypiodbc Dla Windows: ADO. Okazuje się, że łatwo jest uzyskać dostęp do baz danych, arkuszy kalkulacyjnych Excel i wszystkiego innego za pomocą nowoczesnego (w przeciwieństwie do starego ODBC) sterownika za pośrednictwem COM.
Sprawdź następujące Artykuły:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-09 20:48:15
Na Ubuntu 12.04 to było to, co zrobiłem, aby to działało.
Zainstaluj pyodbc:
$ sudo apt-get install python-pyodbc
Kontynuuj instalację dodatkowych sterowników:
$ sudo apt-get install mdbtools libmdbodbc1
Zrób mały program testowy, który łączy się z DB i wyświetla wszystkie tabele:
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
Mam nadzieję, że pomogło.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-07 11:01:31
Osobiście nigdy nie byłem w stanie uzyskać narzędzia MDB (wraz z pokrewnymi rzeczami ODBC, takimi jak unixODBC) do poprawnego działania z Pythonem lub PHP pod Linuksem, nawet po wielu próbach. Po prostu próbowałem instrukcji w innej odpowiedzi na to pytanie tutaj i wszystko co dostałem to " Segmentation fault(core)".
Jednak dostałem Jython i sterownik UCanAccess JDBC do odczytu obu .mdb i .pliki accdb na Linuksie. Aby uzyskać szczegółowe instrukcje, jak skonfigurować go pod Ubuntu 14.04 LTS zobacz moją drugą odpowiedź tutaj .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:09:42
Odczytywanie bazy danych Access jako ramki danych (Windows).
Jest to bardzo szybkie i łatwe rozwiązanie, które z powodzeniem wykorzystałem dla mniejszych baz danych.
Możesz odczytać bazę danych Access, wykonując Stały link do Excela i zapisując ten plik( wystarczy kilka kliknięć), link tutaj:
Możesz wtedy po prostu przeczytaj ten plik Excela jako ramkę danych pandy.
Więc, na przykład, Zapisz połączony plik Excel jako ' link_to_master.xlsx ' w lokalizacji \ FileStore \ subfolder1\subfolder.
Uruchom następujące w Pythonie:
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
Rozważ częstotliwość odświeżania łącza, jeśli ponownie odwiedzasz skrypt Pythona. czyli połączenie między Excelem a Access jest statyczne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-07 10:29:53
Najprawdopodobniej będziesz chciał użyć ładnego frameworka, takiego jak SQLAlchemy, aby uzyskać dostęp do swoich danych, a przynajmniej polecam. Wsparcie dla dostępu jest "eksperymentalne", ale pamiętam, że używałem go bez zbyt wielu problemów. Sam używa pyodbc pod maską, aby połączyć się z dostępem do dbs, więc powinien działać z windows, linux, os x i tym podobne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-12 16:51:52
Jeśli zsynchronizujesz swoją bazę danych z Internetem za pomocą EQL Data, możesz odpytywać zawartość tabel dostępu za pomocą JSON lub YAML: http://eqldata.com/kb/1002 .
Ten artykuł dotyczy PHP, ale równie dobrze działałby w Pythonie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-12 22:00:41
Jeśli masz trochę wolnego czasu, możesz spróbować naprawić i zaktualizować tę klasę Pythona, która odczytuje DBs MS-Access poprzez natywne API COM32-client: Klasa ekstrakcji i manipulacji dla Microsoft Access
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-10 19:12:11
Sposób, w jaki podłączam Pythona do MS Access pod Windows jest za pomocą tego sposobu: Połącz się z MS Access za pomocą Pythona. Może znajdziesz jakieś problemy na Win 7, więc znalazłem rozwiązanie: Rozwiązywanie połączenia między MS Access A Pythonem w Windows 7
Nie próbowałem łączyć się pod Linuksem!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-29 12:15:10