MulaiMulai sekarang secara gratis

Bekerja dengan blok rekaman

Kerja Anda sejauh ini luar biasa! Seperti yang dibahas Jason dalam video, kadang-kadang Anda perlu bekerja dengan ResultProxy yang besar, dan Anda mungkin tidak memiliki memori untuk memuat semua hasil sekaligus. Untuk mengatasi hal tersebut, Anda dapat mengambil blok baris dari ResultProxy dengan menggunakan metode .fetchmany() di dalam sebuah loop. Dengan .fetchmany(), berikan argumen berupa jumlah rekaman yang Anda inginkan. Saat Anda mendapatkan daftar kosong, itu berarti tidak ada baris tersisa untuk diambil, dan Anda telah memproses semua hasil kueri. Kemudian Anda perlu menggunakan metode .close() untuk menutup koneksi ke database.

Sekarang Anda akan berlatih ini pada sebuah ResultProxy besar bernama results_proxy yang telah disiapkan untuk Anda.

Latihan ini adalah bagian dari kursus

Pengantar Basis Data di Python

Lihat Kursus

Petunjuk latihan

  • Gunakan while loop yang memeriksa apakah masih ada more_results.
  • Di dalam loop, terapkan metode .fetchmany() pada results_proxy untuk mengambil 50 rekaman setiap kali dan simpan rekaman tersebut sebagai partial_results.
  • Setelah mengambil rekaman, jika partial_results adalah daftar kosong (yaitu sama dengan []), atur more_results menjadi False.
  • Lakukan loop pada partial_results dan, jika row.state adalah sebuah key dalam dictionary state_count, tambahkan state_count[row.state] sebanyak 1; jika tidak, atur state_count[row.state] menjadi 1.
  • Setelah while loop, tutup ResultProxy results_proxy menggunakan .close().
  • Kirim jawaban untuk mencetak state_count.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# Start a while loop checking for more results
while more_results:
    # Fetch the first 50 results from the ResultProxy: partial_results
    partial_results = ____

    # if empty list, set more_results to False
    if partial_results == []:
        more_results = ____

    # Loop over the fetched records and increment the count for the state
    for row in ____:
        if row.state in state_count:
            ____
        else:
            ____

# Close the ResultProxy, and thus the connection
results_proxy.____

# Print the count by state
print(state_count)
Edit dan Jalankan Kode