Filtrare i dati selezionati da una Tabella - Avanzato
Stai davvero prendendo la mano! SQLAlchemy ti permette anche di usare congiunzioni come and_(), or_() e
not_() per costruire filtri più complessi. Per esempio, possiamo ottenere un insieme di record
per le persone a New York che hanno 21 o 37 anni con il seguente codice:
select([census]).where(
and_(census.columns.state == 'New York',
or_(census.columns.age == 21,
census.columns.age == 37
)
)
)
Un'istruzione SQL equivalente sarebbe, per esempio,
SELECT * FROM census WHERE state = 'New York' AND (age = 21 OR age = 37)
Questo esercizio fa parte del corso
Introduzione ai database in Python
Istruzioni dell'esercizio
- Importa
and_dal modulosqlalchemy. - Seleziona tutti i record dalla tabella
census. - Aggiungi una clausola where per filtrare tutti i record il cui
stateè'California'e il cuisexnon è'M'. - Esegui
stmtnella connessione e itera sul ResultProxy per stampare le colonneageesexda ogni record.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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(____, ____)