Fastapi之pydantic

本文介绍了Pydantic,一个支持类型提示、模式验证的Python库,具有速度快、与IDE集成、模式生成、严格与宽松模式选择以及对标准库类型的支持。还探讨了其验证器的灵活性和序列化方法的多样性,以及在TradeSave类中的具体应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方文档

特点

由类型提示提供支持

使用Pydantic,模式验证和序列化由类型注释控制;学习更少,编写更少的代码,以及与IDE和静态分析工具的集成。

Speed

Pydantic的核心验证逻辑是用Rust编写的。因此,Pydantic是Python中速度最快的数据验证库之一。

JSON模式

Pydantic模型可以发出JSON模式,从而可以轻松地与其他工具集成。

Strict和Lax模式

Pydantic可以在Strict=True模式(其中数据不转换)或Strict=False模式下运行,其中Pydantic试图在适当的情况下将数据强制转换为正确的类型。

dataclass、TypedDicts等

Pydantic支持验证许多标准库类型,包括dataclass和TypedDict。

自定义

Pydantic允许自定义验证器和序列化程序以许多强大的方式更改数据的处理方式。

生态系统

PyPI上大约有8000个包使用Pydantic,包括非常流行的库,如FastAPI、huggingface、Django Ninja、SQLModel和LangChain。

参数的验证

Pydantic提供多种类型的验证器功能:

After validators

在Pydantic的内部解析之后运行。它们通常更为类型安全,因此更易于实现。

Before validators

在Pydantic的内部解析和验证(例如,将str强制为int)之前运行。它们比After验证器更灵活,因为它们可以修改原始输入,但也必须处理原始输入,理论上原始输入可以是任何任意对象。

Plain validators

普通验证器就像一个mode='before’验证器,但它们会立即终止验证,不会调用进一步的验证器,Pydantic也不会进行任何内部验证。

Wrap validators

Wrap验证器是所有验证器中最灵活的。您可以在Pydantic和其他验证器执行任务之前或之后运行代码,也可以立即终止验证,无论是成功值还是错误。

具体用法见这里

序列化

面向对象

常用的序列化装饰器有:
@field_serializer
@model_serializer
PlainSerializer
WrapSerializer

面向函数

model.model_dump(…
model.model_dump_json(…)¶
dict(model) and iteration¶

具体用法见这里

常见用法

class TradeSave(BaseModel):
    network: str
    hash: str
    sender: str
    receiver: str
    value: float | None = None
    block: int
    published_at: datetime
    type: str
    content: Dict[Optional[str], dict | list | str] | None = {}

    @field_validator('published_at')
    @classmethod
    def validate_timestamp(cls, value):
        if not value:
            return None
        if isinstance(value, str):
            return datetime.fromisoformat(value)
        return value
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cherry Xie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值