""" 資料庫連線管理 (延遲初始化版本) """ from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, Session from typing import Generator # 延遲初始化 _engine = None _SessionLocal = None def get_engine(): """獲取資料庫引擎 (延遲初始化)""" global _engine if _engine is None: from app.core.config import settings _engine = create_engine( settings.DATABASE_URL, echo=settings.DATABASE_ECHO, pool_pre_ping=True, pool_size=10, max_overflow=20, ) return _engine def get_session_local(): """獲取 Session 工廠 (延遲初始化)""" global _SessionLocal if _SessionLocal is None: _SessionLocal = sessionmaker( autocommit=False, autoflush=False, bind=get_engine(), ) return _SessionLocal def get_db() -> Generator[Session, None, None]: """ 取得資料庫 Session 用於 FastAPI 依賴注入 """ SessionLocal = get_session_local() db = SessionLocal() try: yield db finally: db.close()