import dotenv from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker import os dotenv.load_dotenv() engine = create_engine( os.getenv("DB_URL"), pool_pre_ping=True, # Check connection before using it pool_size=5, # Connection pool size max_overflow=10, # Max extra connections when pool is full pool_recycle=3600, # Recycle connections after 1 hour echo=True, # Log SQL queries ) Base = declarative_base() # Base class for ORM models SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) def get_db(): db = SessionLocal() try: yield db finally: db.close()