unis_manager/app/db.py

31 lines
659 B
Python

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()