Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zaimportuj and_ z modułu sqlalchemy.
  • Wybierz wszystkie rekordy z tabeli census.
  • Dodaj klauzulę where, która odfiltruje rekordy, w których state ma wartość 'California', a sex nie jest równe 'M'.
  • Wykonaj stmt w ramach połączenia i przejdź pętlą po obiekcie ResultProxy, aby wypisać kolumny age i sex dla 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(____, ____)
Edytuj i uruchom kod