from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from config.settings import DB_CONFIG from urllib.parse import quote_plus DATABASE_URL = ( f"mysql+pymysql://{DB_CONFIG['user']}:{quote_plus(DB_CONFIG['password'])}" f"@{DB_CONFIG['host']}:{DB_CONFIG['port']}/{DB_CONFIG['database']}" ) engine = create_engine( DATABASE_URL, pool_size=5, # 默认 5,可根据并发调整 max_overflow=20, # 超过 pool_size 后最大溢出连接数 pool_timeout=30, # 等待连接的超时时间 pool_recycle=1800, # 防止 MySQL server timeout pool_pre_ping=True # 检查连接是否可用 ) SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False)