pydantic的基础用法

2023-12-07 16:28
文章标签 基础 用法 pydantic

本文主要是介绍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)

在上面的例子中,尽管 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 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 支持许多复杂的类型,如 UnionAnyHttpUrl

from typing import Union
from pydantic import BaseModel, HttpUrlclass MyModel(BaseModel):url: Union[HttpUrl, None]

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

结论

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

这篇关于pydantic的基础用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/466539

相关文章

java中Optional的核心用法和最佳实践

《java中Optional的核心用法和最佳实践》Java8中Optional用于处理可能为null的值,减少空指针异常,:本文主要介绍java中Optional核心用法和最佳实践的相关资料,文中... 目录前言1. 创建 Optional 对象1.1 常规创建方式2. 访问 Optional 中的值2.1

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

Python struct.unpack() 用法及常见错误详解

《Pythonstruct.unpack()用法及常见错误详解》struct.unpack()是Python中用于将二进制数据(字节序列)解析为Python数据类型的函数,通常与struct.pa... 目录一、函数语法二、格式字符串详解三、使用示例示例 1:解析整数和浮点数示例 2:解析字符串示例 3:解

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

javascript fetch 用法讲解

《javascriptfetch用法讲解》fetch是一个现代化的JavaScriptAPI,用于发送网络请求并获取资源,它是浏览器提供的全局方法,可以替代传统的XMLHttpRequest,这篇... 目录1. 基本语法1.1 语法1.2 示例:简单 GET 请求2. Response 对象3. 配置请求

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

mysql中的group by高级用法详解

《mysql中的groupby高级用法详解》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,本文给大家介绍mysql中的groupby... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2