Python类型迁移
配置和序列化 API
Pydantic v2 用类属性 model_config 替代 v1 的内部 Config 类;导出模型使用 model_dump(),JSON 使用 model_dump_json()。
from pydantic import BaseModel, ConfigDict, field_validator
class User(BaseModel):
model_config = ConfigDict(extra='forbid')
name: str
@field_validator('name')
@classmethod
def strip_name(cls, value: str) -> str:
return value.strip()
payload = User(name=' Nono ').model_dump()v1 的 @validator 已被 @field_validator 替代,模型级校验使用 @model_validator。迁移时要留意 validator 的执行模式和拿到的数据形态。
- 不要继续调用废弃的
dict()、json();统一到 model_dump 系列。 - 嵌套模型和 ORM 数据要在项目内做一次端到端验证,别只跑单元测试。
- 配置项名称有变化,尤其是 alias 和 ORM 相关设置,查对应版本文档确认。
性能敏感路径可使用 TypeAdapter 校验非模型类型,但需要把 adapter 复用起来,反复构造会抵消收益。
迁移过程中应锁定 pydantic 和依赖框架版本;FastAPI 等框架对 v2 的支持范围也会影响最终行为。