pydantic的基础用法

本文介绍了Pydantic,一个基于Python类型提示的数据处理库,包括如何创建数据模型、字段验证、嵌套模型和自定义校验。通过实例演示了安装、基本用法和高级特性,展示了其在数据处理中的强大功能。

Pydantic 基础教程

Pydantic 是一个 Python 库,用于数据解析和校验,它主要基于 Python 类型提示来进行。下面将详细介绍如何使用 Pydantic 来构建数据模型、校验数据以及处理数据。

安装 Pydantic

pip install pydantic

快速开始

创建一个基本模型

在 Pydantic 中,利用类定义数据模型并使用类型注解声明每个字段的数据类型:

from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str
    age: int
    signup_ts: datetime = None

实例化和验证模型

Pydantic 模型将会在创建实例时自动进行数据验证:

from datetime import datetime

user_data = {
    'id': '123',
    'name': 'John Doe',
    'age': 30,
    'signup_ts': '2023-01-01 12:34'
}

user = User(**user_data)

print(user)
#> id=123 name='John Doe' age=30 signup_ts=datetime.datetime(2023, 1, 1, 12, 34)

在上面的例子中,尽管 idsignup_ts 采用了字符串形式,Pydantic 仍然可以正确识别并将它们转换为适当的类型。这些很显然都是pedantic内部做了类型转换进行处理了。

数据校验

如果提供的数据类型不正确,Pydantic 会抛出异常:

try:
    User(id=123, name='John Doe', age='thirty')
except ValidationError as e:
    print(e.json())

这将会输出详细的错误信息,指示哪些字段不符合期望的类型。

模型的其他特性

Pydantic 还支持配置额外的模型设置、复杂的数据类型、嵌套模型等特性。

高级用法

以下是一些 Pydantic 的高级用法:

嵌套模型

你可以定义嵌套模型,以此表达更复杂的数据结构:

from typing import List

class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None

class Order(BaseModel):
    id: int
    items: List[Item]

字段校验

可以在模型字段上添加更多的校验逻辑:

from pydantic import Field

class Item(BaseModel):
    name: str
    description: str = None
    price: float = Field(gt=0)
    tax: float = None

在上述例子中,price 字段必须是大于0的浮点数。

自定义校验器

可以定义自定义的数据校验器:

from pydantic import validator

class Item(BaseModel):
    name: str
    price: float

    @validator('name')
    def name_must_be_capitalized(cls, v):
        if not v[0].isupper():
            raise ValueError('Name must start with a capital letter')
        return v

自定义校验在我们今后的实际开发中非常有用,搭配上全局异常处理,才是我们实际工作中的用法。这个也会在后面的全局异常处理章节进行讲解。

带有复杂类型的模型

Pydantic 支持许多复杂的类型,如 UnionAnyHttpUrl

from typing import Union
from pydantic import BaseModel, HttpUrl

class MyModel(BaseModel):
    url: Union[HttpUrl, None]

这允许 url 所接受的值是一个合法的 HTTP URL 或者是 None。

结论

以上便是一个 Pydantic 的基础教程,通过本教程,你可以了解到 Pydantic 的基本概念、如何定义数据模型、进行数据验证和校验等。Pydantic 提供了非常强大和便捷的机制来处理数据验证和类型转换问题,使得用 Python 处理数据变得简单且健壮。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

micro_cloud_fly

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

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

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

打赏作者

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

抵扣说明:

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

余额充值