import dotenv dotenv.load_dotenv() from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker import os 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 connect_args={"sslmode": "require" if os.getenv("IS_DEV") == "False" else "disable"}, ) 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()