Консольное приложение на 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 # Переменные окружения (доступы к БД)
- film — фильмы (название, год, описание)
- category — жанры
- связи между фильмами и категориями
- Коллекция логов с полями:
- 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
После запуска используйте главное меню:
- Поиск фильмов по ключевым словам
- Поиск по жанру и диапазону лет
- Просмотр популярных запросов
- Просмотр последних запросов
- Выход
Проект демонстрирует:
- Интеграцию с SQL и NoSQL
- Логирование и обработку ошибок
- Модульную архитектуру приложений
- Валидацию пользовательского ввода
- Реализацию консольного интерфейса
Svitlana Rybak
Учебный проект для курса Python Fundamentals.