Files

23 lines
645 B
Python

"""数据库引擎与会话管理(SQLAlchemy 2.0)。"""
from sqlalchemy import create_engine
from sqlalchemy.orm import DeclarativeBase, sessionmaker
from .config import settings
connect_args = {"check_same_thread": False} if settings.DATABASE_URL.startswith("sqlite") else {}
engine = create_engine(settings.DATABASE_URL, connect_args=connect_args, pool_pre_ping=True)
SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False)
class Base(DeclarativeBase):
pass
def get_db():
"""FastAPI 依赖:请求级数据库会话。"""
db = SessionLocal()
try:
yield db
finally:
db.close()