Kom igångKom igång gratis

Arbeta med block av poster

Bra jobbat hittills! Som Jason tog upp i videon kan det ibland uppstå situationer där du arbetar med en stor ResultProxy men saknar minne för att läsa in alla resultat på en gång. För att lösa det problemet kan du hämta block av rader från ResultProxy med hjälp av metoden .fetchmany() inuti en loop. Skicka in antalet poster du vill hämta som argument till .fetchmany(). När du får tillbaka en tom lista finns det inga fler rader att hämta, och du har bearbetat alla resultat från frågan. Sedan behöver du använda metoden .close() för att stänga anslutningen till databasen.

Nu får du öva på detta med hjälp av en stor ResultProxy som heter results_proxy, vilken redan är inläst åt dig.

Den här övningen är en del av kursen

Introduktion till databaser i Python

Visa kurs

Övningsinstruktioner

  • Använd en while-loop som kontrollerar om more_results är sant.
  • Inuti loopen anropar du metoden .fetchmany()results_proxy för att hämta 50 poster i taget och lagra dem i partial_results.
  • Efter att posterna hämtats: om partial_results är en tom lista (dvs. lika med []), sätt more_results till False.
  • Loopa igenom partial_results och öka state_count[row.state] med 1 om row.state redan är en nyckel i state_count-ordboken; annars sätt state_count[row.state] till 1.
  • Efter while-loopen stänger du ResultProxy results_proxy med .close().
  • Skicka in svaret för att skriva ut state_count.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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)
Redigera och kör kod