LoslegenKostenlos loslegen

Daten aus einer Tabelle mit SQLAlchemy auswählen

Bis hierher klasse Arbeit! Jetzt ist es Zeit, deine erste Select-Anweisung mit SQLAlchemy zu bauen. SQLAlchemy bietet eine schöne, „pythonic“ Art, mit Datenbanken zu arbeiten. In der letzten Übung hast du mit Raw-SQL direkt auf die Datenbank zugegriffen. Mit SQLAlchemy gehst du stattdessen über ein Table-Objekt, und SQLAlchemy übernimmt für dich die Übersetzung deiner Abfrage in eine passende SQL-Anweisung. Anstatt dich also mit Unterschieden zwischen bestimmten SQL-Dialekten wie MySQL oder PostgreSQL zu beschäftigen, kannst du das Python-Framework von SQLAlchemy nutzen, um deinen Workflow zu vereinfachen und deine Daten effizienter abzufragen. Deshalb lohnt es sich, SQLAlchemy zu lernen – auch wenn du mit klassischem SQL schon vertraut bist.

In dieser Übung erstellst du erneut eine Anweisung, um alle Datensätze aus der Tabelle census abzufragen. Dieses Mal verwendest du jedoch die Funktion select() aus dem Modul sqlalchemy. Diese Funktion erwartet als einziges Pflichtargument eine Liste von Tabellen oder Spalten: zum Beispiel select([my_table]).

Außerdem holst du nur einige wenige Datensätze aus dem ResultProxy ab, indem du .fetchmany() mit einem size-Argument verwendest, das die Anzahl der abzurufenden Datensätze angibt.

Table und MetaData wurden bereits importiert. Die Metadaten sind als metadata verfügbar und die Verbindung zur Datenbank als connection.

Diese Übung ist Teil des Kurses

Einführung in Datenbanken mit Python

Kurs anzeigen

Anleitung zur Übung

  • Importiere select aus dem Modul sqlalchemy.
  • Spiegle (reflektiere) die Tabelle census. Dieser Code ist bereits für dich geschrieben.
  • Erstelle eine Abfrage mit der Funktion select(), um alle Datensätze in der Tabelle census abzurufen. Übergib dazu eine Liste an select() mit einem einzelnen Element: census.
  • Gib stmt aus, um die erzeugte SQL-Abfrage zu sehen. Dieser Code wurde für dich geschrieben.
  • Hole 10 Datensätze aus der Tabelle census und speichere sie in results. Gehe dazu wie folgt vor:
    • Verwende die Methode .execute() auf connection mit stmt als Argument, um den ResultProxy zu erhalten.
    • Verwende .fetchmany() mit dem passenden size-Argument auf connection.execute(stmt), um das ResultSet abzurufen.

Interaktive Übung

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

# Import select
from ____ import ____

# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)

# Build select statement for census table: stmt
stmt = ____

# Print the emitted statement to see the SQL string
print(stmt)

# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)

# Execute the statement and print the results
print(results)
Code bearbeiten und ausführen