Filtrera data från en tabell – avancerat
Nu börjar du verkligen få kläm på det här! SQLAlchemy låter dig även använda konjunktioner som and_(), or_() och
not_() för att bygga mer komplexa filter. Vi kan till exempel hämta en uppsättning poster
för personer i New York som är 21 eller 37 år gamla med följande kod:
select([census]).where(
and_(census.columns.state == 'New York',
or_(census.columns.age == 21,
census.columns.age == 37
)
)
)
Motsvarande SQL-sats ser till exempel ut så här:
SELECT * FROM census WHERE state = 'New York' AND (age = 21 OR age = 37)
Den här övningen är en del av kursen
Introduktion till databaser i Python
Övningsinstruktioner
- Importera
and_från modulensqlalchemy. - Välj alla poster från tabellen
census. - Lägg till en where-sats som filtrerar alla poster där
stateär'California'ochsexinte är'M'. - Kör
stmtvia anslutningen och iterera över ResultProxy för att skriva ut kolumnernaageochsexfrån varje post.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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(____, ____)