ПочатиПочніть безкоштовно

Опрацювання блоків записів

Чудова робота! Як Джейсон пояснював у відео, інколи доводиться працювати з великим ResultProxy, і може не вистачити пам'яті, щоб завантажити всі результати одразу. Щоб обійти цю проблему, ви можете отримувати блоки рядків із ResultProxy за допомогою методу .fetchmany() всередині циклу. У .fetchmany() передайте аргументом кількість потрібних записів. Коли ви отримаєте порожній список, це означає, що більше рядків немає, і ви обробили всі результати запиту. Після цього потрібно викликати метод .close(), щоб закрити з'єднання з базою даних.

Тепер ви потренуєтеся на великому ResultProxy під назвою results_proxy, який уже підготовлено для роботи.

Ця вправа є частиною курсу

Вступ до баз даних у Python

Переглянути курс

Інструкції до вправи

  • Використайте цикл while, який перевіряє, чи є more_results.
  • Усередині циклу застосуйте метод .fetchmany() до results_proxy, щоб отримувати по 50 записів за раз, і збережіть ці записи як partial_results.
  • Після отримання записів, якщо partial_results — порожній список (тобто дорівнює []), встановіть more_results у False.
  • Ітеруйте по partial_results і, якщо row.state є ключем у словнику 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)
Редагувати та запускати код