Python学习之-Pydantic详解

前言:

Pydantic 是一个 Python 库,用于数据解析和验证。它主要基于 Python 类型提示来实现数据的校验和设定限制条件。在 Pydantic 中,BaseModel 是一个核心基类,用于创建数据模型。

1 BaseModel的主要作用包括:

数据验证(Validation):
BaseModel 类提供了自动数据验证的功能。当你创建一个基于 BaseModel 的子类并且为其字段添加类型注解(type annotations),Pydantic 会在实例化对象时自动校验给定的数据是否符合预期类型和约束。
数据转换(Conversion):
Pydantic 会尝试将输入数据转换成声明的数据类型。例如,如果一个字段被声明为 int 类型,但输入数据是一个数字字符串,如 “123”,Pydantic 会尝试转换这个字符串为整型 123。
模型实例化:
BaseModel 中提供的构造器可以让你轻松地实例化模型,并为其填充数据。在实例化过程中,数据会自动经过验证和转换。
错误处理:
如果数据不符合预期,Pydantic 会抛出描述性的错误(通常是 ValidationError 异常),告诉你哪些数据是无效的以及具体原因。
字段别名:
BaseModel 允许你为模型的字段设定别名,这样在解析外部数据如 JSON 时,如果其字段名称与你的模型字段不一致,依然可以正确匹配和解析。
JSON序列化与反序列化:
BaseModel 提供了 .json() 和 .parse_raw() 两个方法用于模型对象的 JSON 序列化(将 Python 对象转换为 JSON 字符串)和反序列化(将 JSON 字符串或二进制数据解析成 Python 对象)。
示例(Schema)生成:
BaseModel 可以自动为你的模型生成 JSON Schema,这在构建 RESTful API 并使用 OpenAPI/Swagger 进行文档化时非常有用。
ORM 模式:
Pydantic 具有一个 ORM 模式,允许 BaseModel 与 ORMs(如 SQLAlchemy)配合使用,可直接从 ORM 对象创建 Pydantic 模型实例。

#!/usr/bin/env python
# coding=utf-8
"""
# @Time    : 2024/4/8 6:25
# @Author  : Summer
# @File    : test.py
# @describe:
"""
from datetime import datetime
from typing import Optional, List

from pydantic import BaseModel


# 定义模型
class User(BaseModel):
    id: int
    name: str = "Jane Doe"  # 提供默认值
    signup_ts: Optional[datetime] = None
    friends: List[int] = []


# 实例化模型,自动进行数据验证
user = User(id=123, signup_ts="2021-01-01 12:22", friends=[1, 2, 3])

# 这里friends为int类型的时候运行会报如下错误
'''
pydantic_core._pydantic_core.ValidationError: 1 validation error for User
friends
  Input should be a valid list [type=list_type, input_value=1, input_type=int]

'''
# user = User(id=123, signup_ts="2021-01-01 12:22", friends=1)

# 你也可以序列化模型
user_json = user.json()

# 或对初始 JSON 数据进行解析创建模型
original_data = '{"id": "123", "signup_ts": "2021-01-01 12:22", "friends": [1, 2, 3]}'
user = User.parse_raw(original_data)

2 Field

在 Pydantic 中,Field 函数用于提供更多的配置和校验选项给 BaseModel 的字段。通过使用 F

Pydantic是一个Python库,用于数据验证和解析。它提供了一种简单且强大的方式来定义数据模型,并且可以验证输入数据的有效性。通过使用Pydantic,您可以轻松地定义和处理复杂的数据结构。 安装Pydantic的扩展功能可以通过pip命令来完成,例如安装邮件验证支持可以使用以下命令:pip install pydantic[email]。同样地,您也可以安装dotenv文件支持或同时安装多个扩展功能。 Pydantic的核心类是BaseSettings类,它允许在验证请求数据和加载系统设置的上下文中使用。在验证请求数据的上下文中,您可以使用基本数据类型进行验证。而在加载系统设置的上下文中,您可以从环境变量中读取设置,并且还可以处理更复杂的对象,例如DSN和Python对象。 一个很大的优势是,Pydantic的模型的定义与Python的类型提示密切相关。如果您熟悉使用Python类型提示,那么您就知道如何使用Pydantic。数据结构只是使用类型注释定义的类的实例,因此自动完成、linting、mypy、IDE(尤其是PyCharm)和您的直觉都应该与您的验证数据正常工作。您无需学习新的模式定义微语言,只需使用Python类型提示即可定义数据模型。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [pythonpydantic库](https://blog.csdn.net/qq_62789540/article/details/127069443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夏天Aileft

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

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

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

打赏作者

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

抵扣说明:

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

余额充值