from __future__ import annotations from sqlalchemy import create_engine from sqlalchemy.orm import DeclarativeBase, sessionmaker from .config import DATABASE_URL _is_sqlite = DATABASE_URL.startswith("sqlite") connect_args = {"check_same_thread": False} if _is_sqlite else {} engine = create_engine( DATABASE_URL, connect_args=connect_args, pool_pre_ping=not _is_sqlite, future=True, ) SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False, future=True) class Base(DeclarativeBase): """所有模型的基类。""" def get_db(): db = SessionLocal() try: yield db finally: db.close()