Files

38 lines
810 B
Python

"""数据库模块 — SQLAlchemy ORM"""
from __future__ import annotations
from sqlalchemy import create_engine
from sqlalchemy.orm import DeclarativeBase, Session, sessionmaker
from .config import get_config
engine = None
SessionLocal = None
class Base(DeclarativeBase):
"""ORM 基类"""
pass
def init_db() -> None:
"""初始化数据库连接"""
global engine, SessionLocal
config = get_config()
engine = create_engine(config.database.url, echo=False)
SessionLocal = sessionmaker(bind=engine)
Base.metadata.create_all(bind=engine)
def get_session() -> Session:
"""获取数据库会话"""
if SessionLocal is None:
init_db()
return SessionLocal()
def close_session(session: Session) -> None:
"""关闭数据库会话"""
session.close()