НачатьНачать бесплатно

Фильтрация данных из таблицы — продвинутый уровень

Вы уже уверенно работаете с запросами! 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(____, ____)
Редактировать и запускать код