1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Nhập môn Cơ sở dữ liệu với Python

Connected

Bài tập

Làm việc theo từng khối bản ghi

Bạn làm rất tuyệt cho đến giờ! Như Jason đã nói trong video, đôi khi bạn cần làm việc với một ResultProxy lớn và có thể không đủ bộ nhớ để tải toàn bộ kết quả cùng lúc. Để xử lý vấn đề này, bạn có thể lấy từng khối hàng từ ResultProxy bằng cách dùng phương thức .fetchmany() bên trong một vòng lặp. Với .fetchmany(), truyền vào số lượng bản ghi bạn muốn. Khi nhận được một danh sách rỗng, nghĩa là không còn hàng nào để lấy nữa và bạn đã xử lý xong toàn bộ kết quả truy vấn. Sau đó, bạn cần dùng phương thức .close() để đóng kết nối tới cơ sở dữ liệu.

Giờ bạn sẽ thực hành điều này trên một ResultProxy lớn tên là results_proxy đã được nạp sẵn để bạn làm việc.

Hướng dẫn

100 XP
  • Dùng vòng lặp while để kiểm tra xem còn more_results hay không.
  • Bên trong vòng lặp, áp dụng phương thức .fetchmany() lên results_proxy để lấy 50 bản ghi mỗi lần và lưu các bản ghi đó vào partial_results.
  • Sau khi lấy dữ liệu, nếu partial_results là danh sách rỗng (tức bằng []), đặt more_results thành False.
  • Lặp qua partial_results và, nếu row.state là một khóa trong từ điển state_count, tăng state_count[row.state] thêm 1; ngược lại đặt state_count[row.state] bằng 1.
  • Sau vòng lặp while, đóng ResultProxy results_proxy bằng .close().
  • Gửi câu trả lời để in state_count.