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

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Java8 Collectors.toMap() 的两种用法

《Java8Collectors.toMap()的两种用法》Collectors.toMap():JDK8中提供,用于将Stream流转换为Map,本文给大家介绍Java8Collector... 目录一、简单介绍用法1:根据某一属性,对对象的实例或属性做映射用法2:根据某一属性,对对象集合进行去重二、Du

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Java 中 Optional 的用法及最佳实践

《Java中Optional的用法及最佳实践》在Java开发中,空指针异常(NullPointerException)是开发者最常遇到的问题之一,本篇文章将详细讲解Optional的用法、常用方... 目录前言1. 什么是 Optional?主要特性:2. Optional 的基本用法2.1 创建 Opti

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl