database.py 944 B

1234567891011121314151617181920212223242526272829303132333435
  1. from sqlalchemy import create_engine
  2. from sqlalchemy.ext.declarative import declarative_base
  3. from sqlalchemy.orm import sessionmaker
  4. from utils.config import settings
  5. import time
  6. # 创建数据库引擎
  7. DATABASE_URL = f"mysql+pymysql://{settings.database.user}:{settings.database.password}@{settings.database.host}:{settings.database.port}/{settings.database.database}?charset=utf8mb4"
  8. engine = create_engine(
  9. DATABASE_URL,
  10. pool_size=settings.database.pool_size,
  11. max_overflow=settings.database.max_overflow,
  12. pool_recycle=settings.database.pool_recycle,
  13. pool_pre_ping=True,
  14. echo=settings.app.debug
  15. )
  16. SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
  17. Base = declarative_base()
  18. def get_db():
  19. """获取数据库会话"""
  20. db = SessionLocal()
  21. try:
  22. yield db
  23. finally:
  24. db.close()
  25. def get_unix() -> int:
  26. """获取当前时间戳"""
  27. return int(time.time())