เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การทำงานกับข้อมูลเป็นชุด

ทำได้ยอดเยี่ยมมาก! อย่างที่ Jason อธิบายในวิดีโอ บางครั้งเมื่อต้องทำงานกับ ResultProxy ขนาดใหญ่ อาจไม่มีหน่วยความจำเพียงพอสำหรับโหลดผลลัพธ์ทั้งหมดในครั้งเดียว วิธีแก้ปัญหานี้คือการดึงข้อมูลเป็นชุดจาก ResultProxy โดยใช้เมธอด .fetchmany() ภายในลูป โดยส่งจำนวนระเบียนที่ต้องการเป็น argument เมื่อได้รับลิสต์ว่าง แสดงว่าไม่มีแถวเหลือให้ดึงแล้ว และประมวลผลผลลัพธ์ของคิวรีครบทั้งหมดแล้ว จากนั้นให้ใช้เมธอด .close() เพื่อปิดการเชื่อมต่อกับฐานข้อมูล

ตอนนี้จะได้ฝึกใช้งานกับ ResultProxy ขนาดใหญ่ชื่อ results_proxy ที่เตรียมไว้ให้แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Python เบื้องต้นสำหรับฐานข้อมูล

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ใช้ลูป while ที่ตรวจสอบว่ายังมี more_results อยู่หรือไม่
  • ภายในลูป เรียกเมธอด .fetchmany() บน results_proxy เพื่อดึงข้อมูลครั้งละ 50 ระเบียน แล้วเก็บไว้ใน partial_results
  • หลังจากดึงข้อมูลแล้ว ถ้า partial_results เป็นลิสต์ว่าง (กล่าวคือ มีค่าเท่ากับ []) ให้กำหนด more_results เป็น False
  • วนลูปใน partial_results และถ้า row.state เป็น key ในดิกชันนารี state_count ให้เพิ่มค่า state_count[row.state] ขึ้น 1 มิฉะนั้นให้กำหนด state_count[row.state] เป็น 1
  • หลังจากลูป while เสร็จสิ้น ให้ปิด ResultProxy results_proxy ด้วย .close()
  • ส่งคำตอบเพื่อแสดงผล state_count

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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)
แก้ไขและรันโค้ด