""" 数据库连接配置 (新架构) 使用 AsyncSession 支持异步操作 """ import os from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker from sqlalchemy.orm import declarative_base from dotenv import load_dotenv load_dotenv() # 数据库连接 URL DATABASE_URL = f"postgresql+asyncpg://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}@{os.getenv('DB_HOST')}:{os.getenv('DB_PORT')}/{os.getenv('DB_NAME')}" # 创建异步引擎 engine = create_async_engine( DATABASE_URL, echo=False, # 设置为 True 可以看到 SQL 日志 future=True, pool_size=20, # 核心连接池大小 max_overflow=30, # 溢出连接池大小 pool_timeout=30, # 获取连接的超时时间(秒) pool_recycle=3600 # 连接回收时间(1小时),防止长时间闲置连接被数据库关闭 ) # 创建异步 Session 工厂 SessionLocal = async_sessionmaker( engine, class_=AsyncSession, expire_on_commit=False ) # Dependency async def get_db(): """获取数据库会话""" async with SessionLocal() as session: yield session