跳转到主要内容

简介

  • 本文将引导你完成使用 pydantic 进行数据验证的过程。Pydantic 是一个用 Rust 构建的 Python 库。
  • 在开始之前,请确保你的环境中已安装 Python 和 Pydantic 库。请查看下面的 pydantic 安装命令。
pip install pydantic

创建模型

  • 首先,我们需要导入并让我们的类继承自 pydantic.BaseModel 以开始验证。在我们的示例中,我们将创建一个名为 Person 的类,它将包含姓名、年龄和一个电子邮件。
from pydantic import BaseModel

class Person(BaseModel):
    name: str
    age: int
    email: str
  • 有了这个类,当我们实例化它时,pydantic 将验证参数 nameemail 是否为字符串,以及 age 是否为整数。

使用模型

  • 现在我们已经创建了它,接下来我们将实例化该类。我们将创建一个包含数据的字典,并将其解包传入我们的类。
data = {
    "name": "John",
    "age": 19,
    "email": "john@gmail.com"
}
person = Person(**data)
  • 上面的示例不会引发任何错误,因为所有参数的类型都正确。现在我们将构造一份错误的数据,以确认我们的验证是否 生效。
data = {
    "name": "John",
    "age": "19",
    "email": "john@gmail.com"
}
person = Person(**data)
  • 在上面的示例中,它将引发 ValidationError 错误,因为 age 需要是整数,不能以字符串形式提供。

创建 dataclass

  • 你也可以使用 pydantic 创建 dataclass,它与标准的 Python dataclass 类似,但会像 BaseModel 一样进行验证。
from pydantic import dataclass

@dataclass
class Person:
    name: str
    age: int
    email: str
  • 如果我们向 age 发送一个 string,它将被转换为 int
Pydantic 支持递归验证,这意味着在验证嵌套模型时,它也会验证内部的 模型。如果某个类包含一个 Person 的列表 people: list[Person],它将检查列表中的每一项并将其转换为 Person

附加内容

  • Pydantic 有一些附加功能,例如电子邮件验证和一个后备的时区包。要安装它们,你需要运行以下命令:
pip install pydantic[email]
pip install pydantic[timezone]
  • 你可以通过运行以下命令将两者一起安装。
pip install pydantic[email,timezone]
  • Pydantic[email] 提供了一个用于处理电子邮件的类,对其进行规范化并验证 user@domain.tld 格式。为此,pydantic 提供了 EmailStr 类来完成此验证。
from pydantic import dataclass, EmailStr

@dataclass
class Person:
    name: str
    age: int
    email: EmailStr

你喜欢这篇文章吗?

  • 我们精心创作了这些内容,只为提供尽可能好的帮助。 如果这篇文章对你有任何帮助,请支持我们的工作!留下你的评价!这能帮助我们了解什么对你最重要。

Google Reviews

在 Google Reviews 上留下你的评价。

Trustpilot

在 Trustpilot 上留下你的评价。