LoslegenKostenlos loslegen

Tabellen aus einer Datenbank automatisch laden

SQLAlchemy kann Tabellen mithilfe von sogenannter Reflection automatisch aus einer Datenbank laden. Reflection ist der Prozess, die Datenbank auszulesen und auf Basis dieser Informationen die Metadaten aufzubauen. Das ist das Gegenteil davon, eine Table per Hand zu erstellen, und sehr praktisch, wenn du mit bestehenden Datenbanken arbeitest.

Für die Reflection musst du zuerst ein MetaData-Objekt importieren und initialisieren. MetaData-Objekte enthalten Informationen über Tabellen, die in einer Datenbank gespeichert sind. Während der Reflection wird das MetaData-Objekt automatisch mit Informationen über die reflektierte Tabelle befüllt. Daher müssen wir es vor dem Reflecten nur mit MetaData() initialisieren.

Außerdem musst du das Table-Objekt aus dem SQLAlchemy-Paket importieren. Dann verwendest du dieses Table-Objekt, um deine Tabelle aus dem Engine einzulesen, die Spalten automatisch zu laden und die Metadaten zu befüllen. Das lässt sich mit einem einzelnen Aufruf von Table() erledigen: Die Verwendung des Table-Objekts auf diese Weise ist ähnlich wie das Übergeben von Argumenten an eine Funktion. Um zum Beispiel die Spalten mit dem Engine automatisch zu laden, musst du die Schlüsselwortargumente autoload=True und autoload_with=engine an Table() übergeben.

Um dir abschließend Informationen über das gerade erstellte Objekt anzusehen, verwendest du die Funktion repr(). Für jedes Python-Objekt gibt repr() eine textuelle Darstellung dieses Objekts zurück. Für SQLAlchemy-Table-Objekte liefert sie die in den Metadaten enthaltenen Informationen zu dieser Tabelle.

In dieser Übung sollst du die Tabelle "census", die auf deinem engine verfügbar ist, in eine Variable namens census reflektieren. Den Code zum Erstellen des Engine, den du in der vorherigen Übung geschrieben hast, haben wir bereits eingefügt.

Diese Übung ist Teil des Kurses

Einführung in Datenbanken mit Python

Kurs anzeigen

Anleitung zur Übung

  • Importiere Table und MetaData aus sqlalchemy.
  • Erstelle ein MetaData-Objekt: metadata.
  • Reflektiere die Tabelle census, indem du das Table-Objekt mit folgenden Argumenten verwendest:
    • Den Tabellennamen als String ('census').
    • Die soeben initialisierten Metadaten.
    • autoload=True
    • Das Engine, mit dem autoload ausgeführt werden soll – in diesem Fall engine.
  • Gib die Details von census mit der Funktion repr() aus.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# Import create_engine, MetaData, and Table
from sqlalchemy import create_engine, ___, ____

# Create engine: engine
engine = create_engine('sqlite:///census.sqlite')

# Create a metadata object: metadata
metadata = ___

# Reflect census table from the engine: census
census = Table(____, ____, autoload=____, autoload_with=____)

# Print census table metadata
print(____)
Code bearbeiten und ausführen