import os from sqlalchemy import create_engine, text from sqlalchemy.orm import Session, sessionmaker def _db_url() -> str: return ( f"mysql+pymysql://{os.environ['MYSQL_USER']}:{os.environ['MYSQL_PASSWORD']}" f"@{os.environ['MYSQL_HOST']}:{os.environ.get('MYSQL_PORT', 3306)}" f"/{os.environ['MYSQL_DATABASE']}" ) engine = create_engine(_db_url(), pool_pre_ping=True) SessionLocal = sessionmaker(bind=engine) def get_db(): db: Session = SessionLocal() try: yield db finally: db.close() def check_db() -> tuple[bool, str]: try: with engine.connect() as conn: conn.execute(text("SELECT 1")) return True, "ok" except Exception as e: return False, str(e)