database.py 793 B

123456789101112131415161718192021222324252627282930
  1. """Database connection and session management (SQLite + SQLAlchemy)."""
  2. from sqlalchemy import create_engine
  3. from sqlalchemy.orm import sessionmaker, declarative_base
  4. from .config import DATABASE_URL
  5. # SQLite engine (check_same_thread=False for FastAPI async)
  6. engine = create_engine(
  7. DATABASE_URL,
  8. connect_args={"check_same_thread": False},
  9. echo=False,
  10. )
  11. SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
  12. Base = declarative_base()
  13. def get_db():
  14. """Dependency for FastAPI route database sessions."""
  15. db = SessionLocal()
  16. try:
  17. yield db
  18. finally:
  19. db.close()
  20. def init_db():
  21. """Create all database tables."""
  22. from . import models # noqa: F401 - ensure models are imported
  23. Base.metadata.create_all(bind=engine)