/
tsps
/
core
Обзор
Документация
Войти
/
tsps
/
core
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
app/database.py
37 строк
1 KB
Василий Петров
Настройка пула соединений SQLAlchemy для защиты от разрывов
10 мар 2026, 16:39
10 мар 2026, 16:39
18f1827
Код
Авторство
О чём код?
from sqlalchemy import create_engine from sqlalchemy.orm import declarative_base, sessionmaker from typing import Generator from app.core.config import config # ActiveRecord::Base.connection в мире Rails :) engine = create_engine( config.DATABASE_URL, pool_pre_ping=True, # проверка перед соединением (защита от мертвых коннектов) pool_recycle=1800, # пересоздаём соединения не реже чем раз в полчаса ) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() # Базовый класс для моделей # Импортируем модели, чтобы они зарегистрировались в Base.metadata import app.models def get_db() -> Generator: """ Зависимость для внедрения сессии SQLAlchemy в роуты FastAPI. Открывает сессию перед выполнением эндпоинта и гарантирует её закрытие после завершения обработки запроса (даже при ошибках). Использование: def some_route(db: Session = Depends(get_db)): return db.query(...) Yields: sqlalchemy.orm.Session: Активная сессия БД. """ db = SessionLocal() try: yield db finally: db.close()