from sqlalchemy import create_engine, MetaData from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from sqlalchemy.pool import QueuePool from .config import settings # 创建带连接池监控的引擎 engine = create_engine( settings.DATABASE_URL, poolclass=QueuePool, pool_pre_ping=True, echo=False, # 生产环境建议关闭SQL日志 pool_size=400, max_overflow=600, pool_timeout=60, # 增加超时时间到60秒 pool_recycle=3600, # 1小时回收连接 pool_reset_on_return='commit' # 归还连接时重置状态 ) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() def get_db(): """数据库依赖注入函数""" db = SessionLocal() try: yield db finally: db.close() def init_db(): """初始化数据库表""" Base.metadata.create_all(bind=engine)