""" SQLAlchemy 数据库配置 ==================== 统一使用 PostgreSQL + 异步模式。 """ from sqlalchemy.ext.asyncio import ( AsyncSession, async_sessionmaker, create_async_engine, ) from sqlalchemy.orm import declarative_base from app.config import get_settings Base = declarative_base() settings = get_settings() async_engine = create_async_engine( settings.DATABASE_URL, pool_size=settings.DATABASE_POOL_SIZE, max_overflow=settings.DATABASE_MAX_OVERFLOW, pool_recycle=settings.DATABASE_POOL_RECYCLE, pool_timeout=settings.DATABASE_POOL_TIMEOUT, pool_pre_ping=True, echo=settings.DEBUG, ) AsyncSessionLocal = async_sessionmaker( async_engine, class_=AsyncSession, expire_on_commit=False, autocommit=False, autoflush=False, ) async def get_db(): """获取异步数据库 Session 注意:commit 由调用方(API层或Service层)控制,不在此自动提交 """ async with AsyncSessionLocal() as session: try: yield session except Exception: await session.rollback() raise finally: await session.close() async def init_db(): """初始化数据库""" async with async_engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) async def close_db(): """关闭数据库连接""" await async_engine.dispose()