《Python编程实战》7.1 Pydantic V2 模型设计
上一章我们用 SQLAlchemy 打通了数据库,这一节回到 HTTP 边界:用 Pydantic V2(2.13.5)设计请求/响应模型。覆盖 Field 约束与 Annotated 复用、field_validator 与 model_validator、ConfigDict 关键开关、别名、computed_field,以及 model_dump 的取舍与 from_attributes。
tag
上一章我们用 SQLAlchemy 打通了数据库,这一节回到 HTTP 边界:用 Pydantic V2(2.13.5)设计请求/响应模型。覆盖 Field 约束与 Annotated 复用、field_validator 与 model_validator、ConfigDict 关键开关、别名、computed_field,以及 model_dump 的取舍与 from_attributes。
用标准库保留贯穿项目接口,验证缺字段、类型错误、额外参数和序列化失败,并通过离线事件实验区分等待超时与终止执行。
把 Pydantic 校验、FastAPI 依赖注入与 SQLAlchemy 2.x 数据库访问拼成一个真实后端:Field 约束与自定义校验器、带 yield 的依赖做资源清理、select() 2.0 风格 CRUD 真跑 SQLite,并讲清 ORM 模型与 Pydantic 模型为何分离。
静态类型检查器只能看代码,看不到运行时流入的 JSON、环境变量与用户输入。本节先划清静态类型的边界,再入门 Pydantic V2:用 BaseModel 定义模型、Field 加约束、model_validate / model_dump 序列化、field_validator / model_validator 写校验,并用 TypeAdapter 处理裸类型。
Python 3.9-3.12 类型系统全景:内置类型、typing 模块演进、Generic/Protocol/TypeAliasType、Pydantic V2 模型定义/字段校验/序列化/Settings、与 mypy/pyright 的集成策略。包含大量可运行代码示例。