Фільтрування даних, вибраних із Table — розширений рівень
Чудово виходить! 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(____, ____)