Skip to content

RybakSvt/Final_Python_Project

Repository files navigation

Final_Python_Project

Консольное приложение на Python для поиска фильмов с использованием гибридной архитектуры баз данных (MySQL + MongoDB).


Описание проекта

Приложение предоставляет интерфейс командной строки для поиска фильмов в базе данных sakila.
Оно демонстрирует практическое использование как реляционных (MySQL), так и нереляционных (MongoDB) баз данных в одном приложении.


Функциональные возможности

  • Поиск по ключевым словам — нахождение фильмов по части названия.
  • Поиск по жанру и году — фильтрация фильмов по жанрам и диапазону лет выпуска.
  • Аналитика поиска — просмотр популярных запросов и истории поиска.
  • Устойчивость к ошибкам — корректная обработка ошибок и сбоев подключения.
  • Комплексное логирование — запись всех поисковых запросов в MongoDB.

Технологический стек

  • Python 3.x — основной язык
  • MySQL — реляционная БД (данные о фильмах)
  • MongoDB — документная БД (логи запросов)
  • PyMySQL — коннектор для MySQL
  • PyMongo — драйвер для MongoDB
  • python-dotenv — управление переменными окружения

Структура проекта

Final_Python_Project/
│── main.py               # Главное меню и логика навигации
│── mysql_connector.py    # Работа с MySQL и запросы
│── log_writer.py         # Логирование запросов в MongoDB
│── log_stats.py          # Аналитика и статистика
│── formatter.py          # Форматирование вывода в консоль
│── connection_manager.py # Управление подключениями к БД
│── requirements.txt      # Зависимости проекта
│── .env                  # Переменные окружения (доступы к БД)

Схема баз данных

MySQL (sakila)

  • film — фильмы (название, год, описание)
  • category — жанры
  • связи между фильмами и категориями

MongoDB

  • Коллекция логов с полями:
    • timestamp — время запроса
    • search_type — тип поиска (keyword/genre)
    • params — параметры поиска
    • results_count — количество найденных фильмов

Ключевые технические особенности

  • Модульная архитектура (чистое разделение ответственности).
  • Гибридное использование SQL + NoSQL.
  • Автодополнение при поиске по жанрам.
  • Валидация ввода (годы, диапазоны).
  • Централизованное управление подключениями.
  • Строгое соблюдение PEP8.

Установка и настройка

Предварительные требования

  • Python 3.8+
  • Сервер MySQL с базой sakila
  • Экземпляр MongoDB

Конфигурация

Создайте файл .env в корне проекта:

HOST=your_mysql_host
USER=your_mysql_user
PASSWORD=your_mysql_password
MONGO_URI=your_mongo_uri
MONGO_DB=your_mongo_db
MONGO_COLLECTION=your_mongo_collection

Установка зависимостей

pip install -r requirements.txt

Запуск приложения

python main.py

Использование

После запуска используйте главное меню:

  1. Поиск фильмов по ключевым словам
  2. Поиск по жанру и диапазону лет
  3. Просмотр популярных запросов
  4. Просмотр последних запросов
  5. Выход

Образовательная ценность

Проект демонстрирует:

  • Интеграцию с SQL и NoSQL
  • Логирование и обработку ошибок
  • Модульную архитектуру приложений
  • Валидацию пользовательского ввода
  • Реализацию консольного интерфейса

Автор

Svitlana Rybak


Лицензия

Учебный проект для курса Python Fundamentals.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages