Filtrowanie danych wybranych z tabeli – poziom zaawansowany
Świetnie sobie radzisz! SQLAlchemy pozwala też korzystać ze spójników logicznych, takich jak and_(), or_() czy not_(), które umożliwiają budowanie bardziej złożonych filtrów. Na przykład poniższy kod zwraca rekordy osób z Nowego Jorku, które mają 21 lub 37 lat:
select([census]).where(
and_(census.columns.state == 'New York',
or_(census.columns.age == 21,
census.columns.age == 37
)
)
)
Równoważne zapytanie SQL wyglądałoby na przykład tak:
SELECT * FROM census WHERE state = 'New York' AND (age = 21 OR age = 37)
To ćwiczenie jest częścią kursu
Wprowadzenie do baz danych w Pythonie
Instrukcje do ćwiczenia
- Zaimportuj
and_z modułusqlalchemy. - Wybierz wszystkie rekordy z tabeli
census. - Dodaj klauzulę where, która odfiltruje rekordy, w których
statema wartość'California', asexnie jest równe'M'. - Wykonaj
stmtw ramach połączenia i przejdź pętlą po obiekcie ResultProxy, aby wypisać kolumnyageisexdla każdego rekordu.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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(____, ____)