Урок 86. Практикум 22: онлайн-магазин книг, часть 2
⚡ Кратко: суть темы
Практикум 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__"и переменные окружения для секретов.
📚 Что повторить перед изучением
- ← Урок 80: MySQL и Python
- ← Урок 81: Практикум 20
- ← Урок 82: MySQL. Транзакции
- ← Урок 83: Summary session 21
- ← Урок 84: MongoDB и Python. Модули
- ← Урок 85: Практикум 21
- Подключение к MySQL через PyMySQL и выполнение параметризованных запросов.
- Работа с
pymongo:MongoClient,insert_one,find. - Модули, импорты и конструкция
if __name__ == "__main__".