database.py 711 B

12345678910111213141516171819202122232425262728
  1. from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker, AsyncSession
  2. from sqlalchemy.orm import declarative_base
  3. from app.core.config import settings
  4. # 创建异步引擎
  5. print(settings.DATABASE_URL)
  6. engine = create_async_engine(
  7. settings.DATABASE_URL,
  8. echo=False,
  9. pool_size=20,
  10. max_overflow=10,
  11. pool_recycle=3600, # 自动回收连接,防止 MySQL gone away
  12. pool_pre_ping=True,
  13. )
  14. # 会话工厂
  15. AsyncSessionLocal = async_sessionmaker(
  16. bind=engine,
  17. class_=AsyncSession,
  18. expire_on_commit=False
  19. )
  20. Base = declarative_base()
  21. async def get_db():
  22. """依赖注入用的 DB Session"""
  23. async with AsyncSessionLocal() as session:
  24. yield session