| 12345678910111213141516171819202122232425262728293031 |
- from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
- from alien_gateway.config import settings
- # 数据库引擎配置 (异步)
- # 注意:aiomysql 用于异步 MySQL 驱动
- DATABASE_URL = settings.SQLALCHEMY_DATABASE_URI.replace("mysql+pymysql", "mysql+aiomysql")
- engine = create_async_engine(
- DATABASE_URL,
- echo=True, # 开发环境开启 SQL 日志
- pool_pre_ping=True,
- pool_size=10,
- max_overflow=20
- )
- # 创建异步 Session 工厂
- AsyncSessionLocal = async_sessionmaker(
- bind=engine,
- class_=AsyncSession,
- expire_on_commit=False,
- )
- async def get_db():
- """
- FastAPI 依赖注入项,用于获取数据库 Session。
- """
- async with AsyncSessionLocal() as session:
- try:
- yield session
- finally:
- await session.close()
|