Урок 86. Практикум 22: онлайн-магазин книг, часть 2

📁 Блок: Практикум / Базы данных ⏱️ Время изучения: ~120 мин 🎯 Сложность: Средняя
#values #lower #with #as #from #pass #find #sort #match #list #print #input #def #while #if #elif #break #else #enumerate #not #return #for #in #strip #and #int #try #except #import #get #update #insert

⚡ Кратко: суть темы

Практикум 22 — продолжаем развивать консольный магазин книг: добавляем меню клиента, покупку книг, таблицу purchases, логирование поисков в MongoDB и анализ популярных запросов. Финальный этап — разделение монолитного скрипта на модули.

  • Пользователь после входа видит меню: список книг, поиск, покупка, популярные запросы, выход.
  • Покупка проверяет складской остаток и баланс, обновляет таблицы и фиксирует покупку в purchases.
  • Каждый поиск книги сохраняется в MongoDB; по этим данным строится топ популярных запросов.
  • Программа разбивается на модули: main.py, db_setup.py, auth.py, book_importer.py, user_actions.py, search_logs.py.

Что запомнить: бизнес-операция «покупка» = проверка условий + обновление нескольких таблиц + commit(); поиски и аналитика — отличная задача для документоориентированной MongoDB.

Частая ошибка: забыть connection.commit() после UPDATE или спутать user_id и book_id в INSERT INTO purchases.

📖 О чём этот урок

В этом практикуме мы продолжаем проект онлайн-магазина книг, начатый в уроке 85. Теперь акцент смещается на действия авторизованного клиента: просмотр каталога, поиск, покупка и работа с историей.

Также мы подключим MongoDB, чтобы собирать поисковые запросы пользователей, и научимся анализировать их частоту. В финале разобьём разросшийся скрипт на логические модули — так, как это делается в реальных проектах.

Что изучим

  • Дополнительное меню клиента и функцию user_menu.
  • Выборку книг с условием stock > 0 и параметризованный поиск по подстроке.
  • Покупку книги с проверкой остатка и баланса, обновлением таблиц и фиксацией в purchases.
  • Связи между таблицами через FOREIGN KEY.
  • Сохранение поисковых запросов в MongoDB методом insert_one.
  • Анализ популярных запросов с помощью Counter и MongoDB-агрегации $group.
  • Разделение программы на модули, if __name__ == "__main__" и переменные окружения для секретов.

📚 Что повторить перед изучением

🎯 Что изучать дальше