Pydantic:Python 数据验证库的新宠

Pydantic

Pydantic 是一个在 Python 中用于数据验证和解析的第三方库。它提供了一种简单且直观的方式来定义数据模型,并使用这些模型对数据进行验证和转换。

Pydantic 的一些主要特性:

  1. 类型注解:Pydantic 使用类型注解来定义模型的字段类型。你可以使用 Python 内置的类型、自定义类型或者其他 Pydantic 提供的验证类型。
  2. 数据验证:Pydantic 自动根据模型定义进行数据验证。它会检查字段的类型、长度、范围等,并自动报告验证错误。你可以使用 ValidationError 异常来捕获验证错误。
  3. 模型转换:Pydantic 提供了从各种数据格式(例如 JSON、字典)到模型实例的转换功能。它可以自动将输入数据解析成模型实例,并保留类型安全性和验证规则。

Pydantic 使用前需要先进行安装。

pip install pydantic

Pydantic 基本操作

使用 Pydantic,可以定义一个模型类,该类需要继承 pydantic 中的 BaseModel 类,模型类描述了数据的结构和类型,并指定验证规则。

然后,可以使用这个模型类来验证输入的数据是否符合预期,并以类型安全的方式访问和操作数据。

from pydantic import BaseModel, ValidationError

class User(BaseModel):
    name: str
    age: int
    email: str

try:
    user = User(name="Alice", age="30", email="alice@example.com") 
except ValidationError as e:
    print(e.json())

如果创建实例的数据不符合类型注解的要求,则会报 ValidationError 错误。

Pydantic 高级操作

Pydantic 还可以结合 typing 模块,进行默认值,可选字段属性等验证的高级操作。甚至还可以通过 EmailStr 类来直接验证邮件正确性,但该类依赖一个第三方模块,在使用前需要使用 pip install email-validator 进行安装后才可以使用。

from typing import Optional
from pydantic import BaseModel, EmailStr

class User(BaseModel):
    name: str
    age: int
    email: EmailStr
    phone: Optional[str] = None


user = User(name="Alice", age=30, email="alice@example.com")  # 有效
user = User(name="Alice", age=30, email="invalid_email")  # 错误:无效的电子邮件

Field 对象

Field函数提供了许多参数来定制字段的行为。以下是一些常用的参数:

  • ...:表示该字段是必填项。
  • default:定义字段的默认值。如果未提供该值,则默认为None,不能与 ... 同时使用。
  • min_lengthmax_length:针对字符串类型的字段定义最小和最大长度限制。
  • gtgeltle:针对数值类型的字段定义大于 gt、大于等于 ge、小于 lt 和小于等于 le 的限制。
from pydantic import BaseModel, EmailStr, ValidationError, Field

class User(BaseModel):
    name: str = Field(..., min_length=1, max_length=10)
    age: int = Field(..., ge=0, le=200)
    email: EmailStr
    phone: str = Field(default="13800138000", min_length=11, max_length=11)

user = None
try:
    user = User(name="Tom", age=22, email="alice@example.com")
except ValidationError as e:
    a = eval(e.json())
    print(a[0]["msg"])
finally:
    print(user)

数据转换

通过定义模型类,可以将通过网络传输或数据库查询的数据转换成模型类对象在程序中使用。

反之,也可以将处理过后的模型类对象转换成对应的字典或 JSON 数据进行存储或传输。

模型类转换为字典

使用 模型类.model_dump() 方法可以将一个模型类实例对象转换为字典类型数据。

from pydantic import BaseModel, EmailStr, Field

class User(BaseModel):
    name: str = Field(..., min_length=1, max_length=10)
    age: int = Field(..., ge=0, le=200)
    email: EmailStr
    phone: str = Field(default="13800138000", min_length=11, max_length=11)

user = User(name="Tom", age=22, email="alice@example.com")
data = User.model_dump(user)
print(data)
print(type(data))

模型类转换为JSON

使用 模型类.model_dump_json() 方法可以将一个模型类实例对象转换为 JSON 字符串。

from pydantic import BaseModel, EmailStr, Field

class User(BaseModel):
    name: str = Field(..., min_length=1, max_length=10)
    age: int = Field(..., ge=0, le=200)
    email: EmailStr
    phone: str = Field(default="13800138000", min_length=11, max_length=11)

user = User(name="Tom", age=22, email="alice@example.com")
data = User.model_dump_json(user)
print(data)
print(type(data))

以上就是“Pydantic:Python 数据验证库的新宠”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值