Lọc dữ liệu chọn từ Table - Nâng cao
Bạn đang bắt nhịp rất tốt! SQLAlchemy cũng cho phép bạn dùng các phép nối logic như and_(), or_() và
not_() để xây dựng bộ lọc phức tạp hơn. Ví dụ, ta có thể lấy tập bản ghi
cho những người ở New York có tuổi là 21 hoặc 37 với đoạn mã sau:
select([census]).where(
and_(census.columns.state == 'New York',
or_(census.columns.age == 21,
census.columns.age == 37
)
)
)
Một câu lệnh SQL tương đương sẽ là, ví dụ:
SELECT * FROM census WHERE state = 'New York' AND (age = 21 OR age = 37)
Bài tập này là một phần của khóa học
Nhập môn Cơ sở dữ liệu với Python
Hướng dẫn bài tập
- Import
and_từ modulesqlalchemy. - Chọn tất cả bản ghi từ bảng
census. - Thêm mệnh đề where để lọc các bản ghi có
statelà'California', vàsexkhông phải'M'. - Thực thi
stmttrong connection và lặp qua ResultProxy để in các cộtagevàsexcủa mỗi bản ghi.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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(____, ____)