webentwicklung-frage-antwort-db.com.de

Was brauche ich, um Microsoft Access-Datenbanken mit Python zu lesen?

Wie kann ich in Python auf Microsoft Access-Datenbanken zugreifen? Mit SQL?

Ich würde eine Lösung bevorzugen, die unter Linux funktioniert, aber ich könnte mich auch für Windows entscheiden.

Ich benötige nur Lesezugriff.

31
Georg Schölly

Ich habe PYODBC verwendet, um sich erfolgreich mit einer MS Access-Datenbank zu verbinden - unter Windows. Die Installation war einfach, die Verwendung ist ziemlich einfach, Sie müssen nur die richtige Verbindungszeichenfolge festlegen (die für MS Access ist in der Liste aufgeführt) und gehen Sie zu den Beispielen.

22
Alex Boschmans

Unter Linux ist MDBTools derzeit Ihre einzige Chance. [umstritten]

Unter Windows können Sie mdb-Dateien mit pypyodbc verarbeiten.

So erstellen Sie eine Access-MDB-Datei:

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

Hier ist ein Hello World-Skript das die Access-Supportfunktionen von pypyodbc vollständig demostiert.

Haftungsausschluss: Ich bin der Entwickler von pypyodbc.

29
pypyodbc

Wie wäre es mit pyodbc ? Diese SO Frage zeigt, dass Sie MS Access damit lesen können.

10
stuartd

Sie haben, was sich nach guten Lösungen anhört. Eine andere, die etwas näher am "Metal" sein könnte, als Sie möchten, ist MDB Tools.

MDB Tools ist eine Gruppe von Open Source-Bibliotheken und -Dienstprogrammen, die den Export von Daten aus MS Access-Datenbanken (MDB-Dateien) ohne Verwendung der Microsoft-DLLs erleichtern. Somit können Nicht-Windows-Betriebssysteme die Daten lesen. Oder anders ausgedrückt: Sie entwickeln das Layout der MDB-Datei um. 

Beachten Sie auch, dass ich bezweifle, dass sie mit ACCDB-Dateien begonnen haben, und es wird wahrscheinlich nicht viel Nachfrage nach dieser Fähigkeit geben.

9
Tony Toews

Alte Frage, aber ich dachte, ich würde einen pypyodbc-Alternativvorschlag für Windows posten: ADO. Es stellt sich heraus, dass es sehr einfach ist, auf Access-Datenbanken, Excel-Tabellen und alles andere mit einem modernen Treiber (im Gegensatz zu ODBC der alten Schule) über COM zuzugreifen.

Schauen Sie sich die folgenden Artikel an:

3
Erik Knowles

Persönlich war ich nie in der Lage, MDB-Tools (zusammen mit verwandten ODBC -Daten wie unixODBC) dazu zu bringen, mit Python oder PHP unter Linux ordnungsgemäß zu arbeiten, selbst nach zahlreichen Versuchen. Ich habe gerade die Anweisungen in der anderen Antwort auf diese Frage ausprobiert hier und alles, was ich bekam, war "Segmentation fault (core dumped)".

Ich habe jedoch Jython und den UCanAccess JDBC-Treiber erhalten, um sowohl .mdb- als auch .accdb-Dateien unter Linux zu lesen. Eine ausführliche Anleitung zum Einrichten unter Ubuntu 14.04 LTS finden Sie in meiner anderen Antwort hier .

2
Gord Thompson

Zum Lesen einer Access-Datenbank als Pandas-Datenrahmen (Windows).

Dies ist eine sehr schnelle und einfache Lösung, die ich erfolgreich für kleinere Datenbanken verwendet habe.

Sie können eine Access-Datenbank lesen, indem Sie einen permanenten Link zu Excel erstellen und diese Datei speichern (dies erfordert einige Klicks). Link hier:

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

Sie können diese Excel-Datei dann einfach als Pandas-Datenrahmen lesen. 

Speichern Sie die verknüpfte Excel-Datei beispielsweise als 'link_to_master.xlsx' im Verzeichnis\FileStore\subfolder1\subfolder.

Führen Sie Folgendes in Python aus:

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

Berücksichtigen Sie die Häufigkeit der Linkaktualisierung, wenn Sie Ihr Python-Skript erneut besuchen. Die Verbindung zwischen Excel und Access ist statisch.

2
Tim0th1

Auf Ubuntu 12.04 habe ich es gemacht, damit es funktioniert.

Pyodbc installieren:

$ Sudo apt-get install python-pyodbc

Folgen Sie der Installation einiger zusätzlicher Treiber:

$ Sudo apt-get install mdbtools libmdbodbc1

Erstellen Sie ein kleines Testprogramm, das eine Verbindung zur DB herstellt und alle Tabellen anzeigt:

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

Ich hoffe es hat geholfen.

2
Menda

Wahrscheinlich möchten Sie ein Nice-Framework wie SQLAlchemy verwenden, um auf Ihre Daten zuzugreifen, oder zumindest würde ich es empfehlen. Unterstützung für Access ist "experimentell", aber ich erinnere mich, dass ich es ohne allzu viele Probleme verwendet habe. Es selbst verwendet pyodbc unter der Haube, um eine Verbindung zu Access dbs herzustellen, also sollte es unter Windows, Linux, os x und whatnot funktionieren.

1
Nico

Wenn Sie Ihre Datenbank mit EQL Data mit dem Web synchronisieren, können Sie den Inhalt Ihrer Access-Tabellen mit JSON oder YAML abfragen: http://eqldata.com/kb/1002 .

In diesem Artikel geht es um PHP, aber es würde auch in Python funktionieren.

0
apenwarr

Die Art und Weise, wie ich Python unter Windows mit MS Access verbinde, ist wie folgt: Verbindung mit MS Access mit Python Ich habe eine Lösung gefunden: Lösen einer Verbindung zwischen MS Access und Python unter Windows 7

Ich habe noch nicht versucht, eine Verbindung unter Linux herzustellen!

0
combuilder

Wenn Sie etwas Zeit haben, können Sie versuchen, diese Python-Klasse, die MS-Access-DBs über die native COM32-Client-API liest, zu korrigieren und zu aktualisieren: Extraktions- und Bearbeitungsklasse für Microsoft Access

0
ankostis