Фильтрация данных из таблицы — продвинутый уровень
Вы уже уверенно работаете с запросами! SQLAlchemy также позволяет использовать конъюнкции, такие как and_(), or_() и
not_(), для построения более сложных условий фильтрации. Например, следующий код позволяет получить записи о людях из Нью-Йорка в возрасте 21 или 37 лет:
select([census]).where(
and_(census.columns.state == 'New York',
or_(census.columns.age == 21,
census.columns.age == 37
)
)
)
Эквивалентный SQL-запрос выглядит, например, так:
SELECT * FROM census WHERE state = 'New York' AND (age = 21 OR age = 37)
Это упражнение является частью курса
Введение в базы данных на Python
Инструкции к упражнению
- Импортируйте
and_из модуляsqlalchemy. - Выберите все записи из таблицы
census. - Добавьте условие where для фильтрации записей, в которых
stateравно'California', аsexне равно'M'. - Выполните
stmtчерез соединение и пройдитесь по ResultProxy, чтобы вывести столбцыageиsexдля каждой записи.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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(____, ____)