Gefilterte Daten aus einer Table auswählen – Fortgeschritten
Du bekommst das wirklich gut hin! SQLAlchemy erlaubt dir außerdem, Konjunktionen wie and_(), or_() und
not_() zu verwenden, um komplexere Filter zu bauen. Zum Beispiel können wir mit folgendem Code
Datensätze für Personen in New York erhalten, die 21 oder 37 Jahre alt sind:
select([census]).where(
and_(census.columns.state == 'New York',
or_(census.columns.age == 21,
census.columns.age == 37
)
)
)
Eine äquivalente SQL-Anweisung wäre zum Beispiel:
SELECT * FROM census WHERE state = 'New York' AND (age = 21 OR age = 37)
Diese Übung ist Teil des Kurses
Einführung in Datenbanken mit Python
Anleitung zur Übung
- Importiere
and_aus dem Modulsqlalchemy. - Wähle alle Datensätze aus der Tabelle
censusaus. - Hänge eine Where-Klausel an, um alle Datensätze zu filtern, deren
state'California'ist und derensexnicht'M'ist. - Führe
stmtin der Verbindung aus und iteriere über den ResultProxy, um die Spaltenageundsexaus jedem Datensatz auszugeben.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Import and_
from ____ import ____
# Build a query for the census table: stmt
stmt = select(____)
# Append a where clause to select only non-male records from California using and_
stmt = stmt.where(
# The state of California with a non-male sex
____(census.columns.state == ____,
census.columns.sex != ____
)
)
# Loop over the ResultProxy printing the age and sex
for result in ____:
print(____, ____)