# ============================================================ # database.py —— 数据库连接与会话管理 # 职责:创建 SQLAlchemy 引擎、会话工厂,并提供 FastAPI 依赖注入用的 get_db # ============================================================ from sqlalchemy import create_engine # 创建数据库引擎 from sqlalchemy.orm import sessionmaker # 创建会话工厂 from model import Base # 导入 ORM 基类(所有模型都继承它) # 数据库引擎:连接 MySQL(驱动 pymysql),目标库名为 fastapi0814 # 连接串格式:mysql+pymysql://用户名:密码@主机/数据库名 engine = create_engine("mysql+pymysql://root:123456@localhost/fastapi0814") # 会话工厂:用于生成数据库会话对象 # autocommit=False 表示手动提交事务;autoflush=False 表示查询前不自动刷写 SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) # FastAPI 依赖函数:通过 Depends(get_db) 注入数据库会话 def get_db(): db = SessionLocal() # 创建新会话 try: yield db # 把会话交给业务代码使用 finally: db.close() # 请求结束后无论如何都要关闭会话,避免连接泄漏