database.py 615 B

123456789101112131415161718192021222324252627282930313233
  1. from sqlalchemy import create_engine
  2. from sqlalchemy.orm import sessionmaker, DeclarativeBase
  3. from app.config import get_settings
  4. settings = get_settings()
  5. engine = create_engine(
  6. settings.DATABASE_URL,
  7. echo=settings.DEBUG,
  8. pool_pre_ping=True,
  9. pool_size=5,
  10. max_overflow=10,
  11. pool_recycle=3600,
  12. )
  13. SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
  14. class Base(DeclarativeBase):
  15. pass
  16. def get_db():
  17. db = SessionLocal()
  18. try:
  19. yield db
  20. db.commit()
  21. except Exception:
  22. db.rollback()
  23. raise
  24. finally:
  25. db.close()