当前位置: 首页 > article >正文

pydantic的基础用法

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 处理数据变得简单且健壮。


http://www.kler.cn/news/162338.html

相关文章:

  • STM32-OLED显示屏
  • 2023 金砖国家职业技能大赛网络安全省赛理论题样题(金砖国家未来技能挑战赛)
  • 基于Java酒店管理系统
  • DedeCms后台文章列表文档id吗?或者快速定位id编辑文章
  • 【Node.js】基础梳理 6 - MongoDB
  • 安全快速地删除 MySQL 大表数据并释放空间
  • 微信小程序 - 创建 ZIP 压缩包
  • Termux
  • VIT总结
  • 算法学习—排序
  • 用网安技术去合法挖漏洞,一个月能拿多少钱?想不到吧!
  • NVMe Over Fabrics with iRDMA总结 - 1
  • WT2605-24SS录放音语音芯片:便捷按键功能提升用户体验
  • linux下查看文件当下的所有文件的大小和查找大文件
  • 线性动态规划
  • 《使用ThinkPHP6开发项目》 - 设置项目环境变量
  • 在线教育小程序如何一键生成App
  • 使用微信虚拟支付后端请求API总是支付签名校验失败
  • 参加百度Apollo技术沙龙—感受自动驾驶的魅力
  • MySQL-日期时间函数详解及练习
  • VUE笔试题精讲1
  • VUE3给table的head添加popover筛选、时间去除时分秒、字符串替换某字符
  • macOS本地调试k8s源码
  • mac苹果笔记本电脑如何强力删除卸载app软件?
  • SQL进阶 | CASE表达式
  • 泽攸科技二维材料转移台的应用场景及优势
  • go-zero 开发入门-加法客服端示例
  • 一文详解设备维护管理软件:降本增效的关键利器
  • Java线程池—附阿里巴巴Java开发手册强制规范要求
  • 【CCF-B】中科院1区TOP,极速1天见刊,国人友好,基金申请必备之选!