Files
new_lottery_bot/database.py
2025-11-15 20:03:49 +09:00

41 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
from sqlalchemy.orm import declarative_base
from dotenv import load_dotenv
# Загружаем переменные окружения
load_dotenv()
# Конфигурация базы данных
DATABASE_URL = os.getenv("DATABASE_URL", "sqlite+aiosqlite:///./lottery_bot.db")
# Создаем асинхронный движок
engine = create_async_engine(
DATABASE_URL,
echo=True, # Логирование SQL запросов
future=True,
)
# Создаем фабрику сессий
async_session_maker = async_sessionmaker(
engine,
class_=AsyncSession,
expire_on_commit=False
)
# Базовый класс для моделей
Base = declarative_base()
async def get_session() -> AsyncSession:
"""Получить асинхронную сессию базы данных"""
async with async_session_maker() as session:
yield session
async def init_db():
"""Инициализация базы данных"""
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
async def close_db():
"""Закрытие соединения с базой данных"""
await engine.dispose()