from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, DeclarativeBase class Base(DeclarativeBase): pass def get_engine(db_url: str): connect_args = {"check_same_thread": False} if db_url.startswith("sqlite") else {} return create_engine(db_url, connect_args=connect_args) def make_session_factory(engine): return sessionmaker(bind=engine, autoflush=False, autocommit=False) def init_db(engine): Base.metadata.create_all(bind=engine)