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

Chọn dữ liệu từ một Table với SQLAlchemy

Bạn làm rất tốt đến đây rồi! Giờ là lúc xây dựng câu lệnh select đầu tiên bằng SQLAlchemy. SQLAlchemy cung cấp một cách tương tác với cơ sở dữ liệu “rất Pythonic”. Ở bài trước khi dùng SQL thuần, bạn truy vấn trực tiếp cơ sở dữ liệu. Khi dùng SQLAlchemy, bạn sẽ làm việc thông qua một đối tượng Table, và SQLAlchemy sẽ lo việc chuyển truy vấn của bạn thành câu lệnh SQL phù hợp. Nhờ vậy, thay vì phải xử lý khác biệt giữa các biến thể SQL truyền thống như MySQL hay PostgreSQL, bạn có thể tận dụng khung Pythonic của SQLAlchemy để tinh gọn quy trình và truy vấn dữ liệu hiệu quả hơn. Vì lý do này, SQLAlchemy rất đáng để học ngay cả khi bạn đã quen với SQL truyền thống.

Trong bài này, bạn sẽ tiếp tục xây dựng một câu lệnh để truy vấn tất cả bản ghi từ bảng census. Tuy nhiên, lần này bạn sẽ dùng hàm select() của mô-đun sqlalchemy. Hàm này yêu cầu một đối số bắt buộc là danh sách các bảng hoặc cột: ví dụ, select([my_table]).

Bạn cũng sẽ chỉ lấy một vài bản ghi từ ResultProxy bằng cách dùng .fetchmany() với đối số size để chỉ định số bản ghi cần lấy.

TableMetaData đã được import. Metadata có sẵn dưới tên metadata và kết nối tới cơ sở dữ liệu là connection.

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 select từ mô-đun sqlalchemy.
  • Phản chiếu (reflect) bảng census. Đoạn mã này đã được viết sẵn cho bạn.
  • Tạo một truy vấn bằng hàm select() để lấy tất cả bản ghi trong bảng census. Để làm vậy, truyền vào select() một danh sách chỉ có một phần tử: census.
  • In stmt để xem câu lệnh SQL thực tế được tạo ra. Đoạn mã này đã được viết sẵn cho bạn.
  • Lấy 10 bản ghi từ bảng census và lưu vào results. Thực hiện như sau:
    • Dùng phương thức .execute() trên connection với đối số là stmt để nhận ResultProxy.
    • Dùng .fetchmany() với đối số size phù hợp trên connection.execute(stmt) để lấy ResultSet.

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 select
from ____ import ____

# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)

# Build select statement for census table: stmt
stmt = ____

# Print the emitted statement to see the SQL string
print(stmt)

# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)

# Execute the statement and print the results
print(results)
Chỉnh sửa và Chạy Mã