Pydantic 是一个 Python 库,用于创建数据模型,并从数据源(如 JSON、YAML、环境变量等)自动验证和解析数据。它旨在简化数据验证和序列化,让开发者能够更加高效地处理数据。
1. Pydantic 简介
Pydantic 的主要目标是提供一个简单、直观的方式来定义数据结构,并自动验证这些结构是否符合预期。它使用 Python 类型提示来描述数据模型,这使得代码更加清晰,同时提供了类型检查的功能。
1.1 安装 Pydantic
首先,您需要安装 Pydantic。可以通过以下命令来安装:
pip install pydantic
1.2 Pydantic 的核心概念
- 模型(Model):Pydantic 的核心是模型,它是一个 Python 类,继承自
pydantic.BaseModel。 - 字段(Field):模型中的每个属性都代表一个字段,它定义了字段的名称、类型、默认值、验证器等。
- 验证(Validation):Pydantic 会自动验证传入的数据是否符合模型的定义。
2. Pydantic 核心接口详解
2.1 创建模型
创建一个 Pydantic 模型非常简单,只需要定义一个继承自 pydantic.BaseModel 的类,并在类中定义字段。
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
2.2 字段定义
在 Pydantic 模型中,每个字段都可以通过 Field 函数进行定义。以下是一些常见的字段参数:
name:字段的名称。type_:字段的类型,可以使用 Python 类型提示。default:字段的默认值。required:字段是否必须。title:字段的标题,用于生成错误信息。description:字段的描述,用于生成错误信息。
from pydantic import BaseModel, Field
class User(BaseModel):
name: str = Field(..., title="用户名", description="用户的名字")
age: int = Field(..., gt=0, title="年龄", description="用户的年龄,必须大于0")
2.3 验证数据
Pydantic 会自动验证传入的数据是否符合模型的定义。如果数据不符合定义,Pydantic 会抛出一个 pydantic.ValidationError 异常。
user = User(name="张三", age=20)
print(user) # 输出:User(name='张三', age=20)
# 如果数据不符合定义,将抛出异常
try:
user = User(name="张三", age=-1)
except pydantic.ValidationError as e:
print(e)
2.4 序列化和反序列化
Pydantic 支持将模型对象序列化为 JSON、YAML 等格式,同时也支持从这些格式反序列化模型对象。
import json
# 序列化
user_json = user.dict()
print(json.dumps(user_json, indent=2))
# 反序列化
user_from_json = User(**json.loads(user_json))
print(user_from_json)
2.5 实战应用
Pydantic 在实际开发中有很多应用场景,例如:
- API 数据验证
- 数据持久化
- 数据传输
- 数据转换
3. 总结
Pydantic 是一个简单、高效的数据验证和序列化库。通过使用 Pydantic,您可以快速创建数据模型,并自动验证和解析数据。希望本文能帮助您更好地了解 Pydantic 的核心接口和实战应用。
