25 lines
1.2 KiB
Python
25 lines
1.2 KiB
Python
# ============================================================
|
|
# 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() # 请求结束后无论如何都要关闭会话,避免连接泄漏
|