Bắt đầu ngayBắt đầu miễn phí

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_()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

Xem khóa học

Hướng dẫn bài tập

  • Import and_ từ module sqlalchemy.
  • 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ó state'California', và sex không phải 'M'.
  • Thực thi stmt trong connection và lặp qua ResultProxy để in các cột agesex củ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(____, ____)
Chỉnh sửa và Chạy Mã