Frage

Kann jemand Punkt mich in der richtigen Richtung, wie eine .mdb-Datei in Python zu öffnen? Ich normalerweise wie einige Code einschließlich der eine Diskussion zu beginnen, aber ich weiß nicht, wo ich anfangen soll. Ich arbeite mit MySQL ein gutes Stück mit Python. Ich frage mich, ob es einen Weg zur Arbeit mit MDB-Dateien auf ähnliche Art und Weise ist?

War es hilfreich?

Lösung

Im Folgenden finden Sie einige Code, den ich schrieb für eine andere Frage SO .
Es erfordert die 3rd-Party Pyodbc Modul .

Dieses sehr einfache Beispiel wird in einer Tabelle verbinden und die Ergebnisse in eine Datei exportieren.
Fühlen Sie sich frei zu erweitern auf Ihre Frage mit irgendwelchen speziellere Bedürfnisse haben Sie vielleicht.

import csv, pyodbc

# set up some constants
MDB = 'c:/path/to/my.mdb'
DRV = '{Microsoft Access Driver (*.mdb)}'
PWD = 'pw'

# connect to db
con = pyodbc.connect('DRIVER={};DBQ={};PWD={}'.format(DRV,MDB,PWD))
cur = con.cursor()

# run a query and get the results 
SQL = 'SELECT * FROM mytable;' # your query goes here
rows = cur.execute(SQL).fetchall()
cur.close()
con.close()

# you could change the mode from 'w' to 'a' (append) for any subsequent queries
with open('mytable.csv', 'wb') as fou:
    csv_writer = csv.writer(fou) # default field-delimiter is ","
    csv_writer.writerows(rows)

Andere Tipps

Es gibt die meza Bibliothek von Reuben Cummings , die Microsoft Access-Datenbanken über mdbtools .

Installation

# The mdbtools package for Python deals with MongoDB, not MS Access. 
# So install the package through `apt` if you're on Debian/Ubuntu
$ sudo apt install mdbtools
$ pip install meza

Verwendung

>>> from meza import io

>>> records = io.read('database.mdb') # only file path, no file objects
>>> print(next(records))

Table1
Table2
…

Neben Bernies Antwort, möchte ich hinzufügen, dass es möglich ist, das Schema der Datenbank wiederherzustellen. Der folgende Code listet die Tabellen (b [2] enthält den Namen der Tabelle).

con = pyodbc.connect('DRIVER={};DBQ={};PWD={}'.format(DRV,MDB,PWD))
cur = con.cursor()

tables = list(cur.tables())

print 'tables'
for b in tables:
    print b

Der folgende Code listet alle Spalten aus allen Tabellen:

colDesc = list(cur.columns())

Für eine Lösung, die funktioniert auf jeder Plattform, die Java ausführen können, sollten Sie Jython oder JayDeBeApi zusammen mit der UCanAccess JDBC-Treiber. Weitere Einzelheiten finden Sie die dazugehörige Frage

eine Access-Datenbank in Python Lesen Sie auf Nicht-Windows-Plattform (Linux oder Mac)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top