本文主要是介绍pydantic的基础用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Pydantic 基础教程
Pydantic 是一个 Python 库,用于数据解析和校验,它主要基于 Python 类型提示来进行。下面将详细介绍如何使用 Pydantic 来构建数据模型、校验数据以及处理数据。
安装 Pydantic
pip install pydantic
快速开始
创建一个基本模型
在 Pydantic 中,利用类定义数据模型并使用类型注解声明每个字段的数据类型:
from pydantic import BaseModelclass User(BaseModel):id: intname: strage: intsignup_ts: datetime = None
实例化和验证模型
Pydantic 模型将会在创建实例时自动进行数据验证:
from datetime import datetimeuser_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)
在上面的例子中,尽管 id
和 signup_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 Listclass Item(BaseModel):name: strdescription: str = Noneprice: floattax: float = Noneclass Order(BaseModel):id: intitems: List[Item]
字段校验
可以在模型字段上添加更多的校验逻辑:
from pydantic import Fieldclass Item(BaseModel):name: strdescription: str = Noneprice: float = Field(gt=0)tax: float = None
在上述例子中,price
字段必须是大于0的浮点数。
自定义校验器
可以定义自定义的数据校验器:
from pydantic import validatorclass Item(BaseModel):name: strprice: 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 支持许多复杂的类型,如 Union
或 AnyHttpUrl
:
from typing import Union
from pydantic import BaseModel, HttpUrlclass MyModel(BaseModel):url: Union[HttpUrl, None]
这允许 url
所接受的值是一个合法的 HTTP URL 或者是 None。
结论
以上便是一个 Pydantic 的基础教程,通过本教程,你可以了解到 Pydantic 的基本概念、如何定义数据模型、进行数据验证和校验等。Pydantic 提供了非常强大和便捷的机制来处理数据验证和类型转换问题,使得用 Python 处理数据变得简单且健壮。
这篇关于pydantic的基础用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!