/
NoWay1co
/
AudioAnalytics
Обзор
Документация
Войти
/
NoWay1co
/
AudioAnalytics
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/database.py
76 строк
2 KB
Ivan
Реализована авторизация, поиск, Docker и миграции БД
06 фев 2026, 22:07
06 фев 2026, 22:07
1a2e0f3
Код
Авторство
О чём код?
""" Database connection and session management. Uses SQLAlchemy with PostgreSQL. """ from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker, Session from typing import Generator from config import settings def get_database_url() -> str: """ Get database URL with correct driver for psycopg3. Converts postgresql:// to postgresql+psycopg:// """ url = settings.DATABASE_URL if url.startswith("postgresql://"): url = url.replace("postgresql://", "postgresql+psycopg://", 1) return url # Create SQLAlchemy engine engine = create_engine( get_database_url(), pool_pre_ping=True, # Check connection health before using pool_size=10, max_overflow=20, echo=settings.DEBUG # Log SQL queries in debug mode ) # Create session factory SessionLocal = sessionmaker( autocommit=False, autoflush=False, bind=engine ) # Base class for ORM models Base = declarative_base() def get_db() -> Generator[Session, None, None]: """ Dependency that provides a database session. Automatically closes the session after the request is completed. Usage: @router.get("/items") def get_items(db: Session = Depends(get_db)): ... """ db = SessionLocal() try: yield db finally: db.close() def init_db() -> None: """ DEPRECATED: Use Alembic migrations instead. Run: alembic upgrade head This function is kept for backward compatibility only. """ import warnings warnings.warn( "init_db() is deprecated. Use 'alembic upgrade head' instead.", DeprecationWarning, stacklevel=2 ) import models # noqa: F401 Base.metadata.create_all(bind=engine)