# База данных PostgreSQL для Telegram бота Этот модуль содержит полную настройку для работы с PostgreSQL через SQLAlchemy. ## Структура файлов - `database.py` - Основные классы для подключения к базе данных - `models.py` - Модели SQLAlchemy (таблицы) - `repositories.py` - Репозитории для работы с данными - `services.py` - Высокоуровневые сервисы - `example.py` - Примеры использования - `requirements.txt` - Зависимости - `.env.example` - Пример файла с переменными окружения ## Быстрый старт ### 1. Установка зависимостей ```bash pip install -r requirements.txt ``` ### 2. Настройка базы данных Создайте файл `.env` на основе `.env.example`: ```bash DB_USER=postgres DB_PASSWORD=your_password DB_HOST=localhost DB_PORT=5432 DB_NAME=telegram_bot ``` ### 3. Основное использование ```python from database import db_service, setup_database # Настройка базы данных (создание таблиц) setup_database() # Регистрация пользователя user, created = db_service.register_user( telegram_id=123456789, username="example_user", first_name="Иван" ) # Сохранение сообщения message = db_service.save_message( telegram_message_id=1001, telegram_user_id=123456789, text="Привет!" ) # Работа с настройками db_service.set_setting("bot_name", "Мой Бот") bot_name = db_service.get_setting("bot_name") ``` ## Основные возможности ### Модели данных - **User** - Пользователи телеграм бота - **Message** - Сообщения от пользователей - **BotSettings** - Настройки бота ### Репозитории - **UserRepository** - CRUD операции с пользователями - **MessageRepository** - CRUD операции с сообщениями - **SettingsRepository** - CRUD операции с настройками ### Сервисы - **DatabaseService** - Высокоуровневый API для работы с данными ## Примеры использования Запустите `example.py` для демонстрации основных возможностей: ```bash python example.py ``` ## Настройки Все настройки подключения к базе данных можно задать через переменные окружения: - `DB_USER` - имя пользователя PostgreSQL - `DB_PASSWORD` - пароль - `DB_HOST` - хост (по умолчанию localhost) - `DB_PORT` - порт (по умолчанию 5432) - `DB_NAME` - имя базы данных ## Требования - Python 3.8+ - PostgreSQL 10+ - SQLAlchemy 2.0+