Xóa các bản ghi cụ thể
Bằng cách dùng mệnh đề where(), bạn có thể nhắm mục tiêu câu lệnh delete để chỉ xóa một số bản ghi nhất định. Ví dụ, Jason đã xóa tất cả các hàng trong bảng employees có id bằng 3 với câu lệnh xóa sau:
delete(employees).where(employees.columns.id == 3)
Tại đây, bạn sẽ xóa TẤT CẢ các hàng có 'M' trong cột sex và 36 trong cột age. Chúng tôi đã thêm mã ở đầu để tính tổng số hàng như vậy. Việc đảm bảo đây chính là số hàng bạn thực sự xóa là rất quan trọng.
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
- Xây dựng một câu lệnh
deleteđể xóa dữ liệu khỏi bảngcensus. Lưu lại dưới têndelete_stmt. - Thêm một mệnh đề
wherevàodelete_stmtcó chứaand_để lọc các hàng có'M'trong cộtsexVÀ36trong cộtage. - Thực thi câu lệnh xóa.
- Gửi câu trả lời để in
rowcountcủaresults, cũng nhưto_delete, là số hàng lẽ ra phải bị xóa. Hai con số này cần KHỚP nhau — đây là bước kiểm tra tính hợp lý quan trọng!
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.
# Build a statement to count records using the sex column for Men ('M') age 36: count_stmt
count_stmt = select([func.count(census.columns.sex)]).where(
and_(census.columns.sex == 'M',
census.columns.age == 36)
)
# Execute the select statement and use the scalar() fetch method to save the record count
to_delete = connection.execute(count_stmt).scalar()
# Build a statement to delete records from the census table: delete_stmt
delete_stmt = ____
# Append a where clause to target Men ('M') age 36: delete_stmt
delete_stmt = delete_stmt.____(
____(census.columns.sex == ____,
____ == ____)
)
# Execute the statement: results
results = connection.execute(____)
# Print affected rowcount and to_delete record count, make sure they match
print(results.rowcount, to_delete)