ComeçarComece de graça

Trabalhando com blocos de registros

Trabalho fantástico até aqui! Como Jason comentou no vídeo, às vezes você pode precisar lidar com um ResultProxy grande e talvez não tenha memória para carregar todos os resultados de uma vez. Para contornar isso, você pode obter blocos de linhas do ResultProxy usando o método .fetchmany() dentro de um loop. Com .fetchmany(), passe como argumento o número de registros desejados. Quando você receber uma lista vazia, não há mais linhas para buscar e você terá processado todos os resultados da consulta. Em seguida, use o método .close() para encerrar a conexão com o banco de dados.

Agora você terá a chance de praticar isso com um ResultProxy grande chamado results_proxy, que já foi pré-carregado para você usar.

Este exercício faz parte do curso

Introdução a Bancos de Dados em Python

Ver curso

Instruções do exercício

  • Use um loop while que verifique se há more_results.
  • Dentro do loop, aplique o método .fetchmany() a results_proxy para obter 50 registros por vez e armazene esses registros como partial_results.
  • Após buscar os registros, se partial_results for uma lista vazia (isto é, se for igual a []), defina more_results como False.
  • Faça um loop sobre partial_results e, se row.state for uma chave no dicionário state_count, incremente state_count[row.state] em 1; caso contrário, defina state_count[row.state] como 1.
  • Após o loop while, feche o ResultProxy results_proxy usando .close().
  • Envie a resposta para imprimir state_count.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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)
Editar e executar o código