from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, DeclarativeBase from pydantic_settings import BaseSettings, SettingsConfigDict from sqlalchemy.pool import QueuePool class Settings(BaseSettings): DATABASE_URL: str model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore",) settings = Settings() class Base(DeclarativeBase): pass engine = create_engine( settings.DATABASE_URL, poolclass=QueuePool, pool_size=10, max_overflow=20, pool_pre_ping=True, pool_recycle=3600, echo=False, ) SessionLocal = sessionmaker(bind=engine, autocommit=False, autoflush=False) def get_db(): db = SessionLocal() try: yield db finally: db.close()