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
Anleitung zur Übung
- Importiere
selectaus dem Modulsqlalchemy. - 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 Tabellecensusabzurufen. Übergib dazu eine Liste anselect()mit einem einzelnen Element:census. - Gib
stmtaus, um die erzeugte SQL-Abfrage zu sehen. Dieser Code wurde für dich geschrieben. - Hole 10 Datensätze aus der Tabelle
censusund speichere sie inresults. Gehe dazu wie folgt vor:- Verwende die Methode
.execute()aufconnectionmitstmtals Argument, um den ResultProxy zu erhalten. - Verwende
.fetchmany()mit dem passendensize-Argument aufconnection.execute(stmt), um das ResultSet abzurufen.
- Verwende die Methode
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)