写点什么

Pydantic 基本操作指南

  • 2024-06-13
    北京
  • 本文字数:1679 字

    阅读完需:约 6 分钟

更多软件测试学习资料戳

Pydantic 是一个用于数据验证和设置的 Python 库,它利用 Python 的类型提示来实现数据模型的定义和验证。Pydantic 能够根据数据模型自动进行数据解析、验证和转换,使得数据处理更加简单和可靠。本文将介绍 Pydantic 的基本操作,帮助你快速上手并利用其强大的功能。

安装 Pydantic

在开始之前,首先需要安装 Pydantic。可以通过 pip 进行安装:

pip install pydantic
复制代码

定义 Pydantic 模型

使用 Pydantic 定义数据模型非常简单,只需创建一个继承自 pydantic.BaseModel 的类,并定义其属性即可。

from pydantic import BaseModel
class User(BaseModel): id: int name: str email: str age: int
# 创建一个 User 对象user = User(id=1, name='Alice', email='alice@example.com', age=30)print(user)
复制代码

在这个例子中,我们定义了一个 User 类,并指定了每个属性的类型注解(如 intstrfloat 等)。Pydantic 使用类型提示来推断和验证数据的类型。

数据验证与自动转换

Pydantic 可以自动验证输入数据并进行类型转换。如果传入的数据类型与模型定义不匹配,Pydantic 将抛出 ValidationError 异常。

# 尝试传入错误类型的数据try:    invalid_user = User(id='1', name='Bob', email='bob@example.com', age='thirty')except ValidationError as e:    print(e)
复制代码

默认值和可选属性

可以为 Pydantic 模型的属性指定默认值或者设置属性为可选的。

from pydantic import BaseModel
class Item(BaseModel): name: str price: float = 0.0 quantity: int = 1 description: str = None # 可选属性
# 创建一个 Item 对象item = Item(name='Keyboard', price=99.99)print(item)
复制代码

在这个例子中,price 和 quantity 属性有默认值,description 是一个可选属性,可以不传入。

数据解析

Pydantic 支持从字典、JSON 字符串等格式的数据进行解析创建对象。

data_dict = {'name': 'Mouse', 'price': 49.99}item = Item(**data_dict)print(item)
json_data = '{"name": "Monitor", "price": 199.99}'item_from_json = Item.parse_raw(json_data)print(item_from_json)
复制代码

嵌套模型

Pydantic 支持嵌套模型,可以在模型中嵌套其他 Pydantic 模型。

class Address(BaseModel):    street: str    city: str    zip_code: str
class Person(BaseModel): id: int name: str address: Address
person_data = { 'id': 1, 'name': 'Alice', 'address': {'street': '123 Main St', 'city': 'Anytown', 'zip_code': '12345'}}
person = Person(**person_data)print(person)
复制代码

数据类的序列化与反序列化

Pydantic 可以将对象转换为字典或 JSON 字符串,也可以从字典或 JSON 字符串反序列化为对象。

# 将对象转换为字典print(user.dict())
# 将对象转换为 JSON 字符串print(user.json())
# 从 JSON 字符串反序列化为对象json_data = '{"id": 2, "name": "Eve", "email": "eve@example.com", "age": 25}'user_from_json = User.parse_raw(json_data)print(user_from_json)
复制代码

使用配置

可以通过配置来自定义 Pydantic 模型的行为,例如自定义错误消息、字段别名等。

from pydantic import BaseModel, ValidationError, Field
class Item(BaseModel): name: str price: float = Field(..., gt=0, description="Price must be greater than zero") quantity: int = Field(1, description="Default quantity is 1")
class Config: anystr_strip_whitespace = True # 自动移除字符串属性的前后空格
# 创建一个 Item 对象try: invalid_item = Item(name='Laptop', price=-999.99)except ValidationError as e: print(e)
复制代码

通过本文的介绍,你应该已经掌握了 Pydantic 的基本操作方法和一些高级特性。Pydantic 提供了强大且易于使用的工具来定义和验证数据模型,使得数据处理更加简单和可靠。在实际应用中,合理利用 Pydantic 可以提高代码的可读性和健壮性,特别是在处理复杂的数据结构和外部数据源时更为有效。


用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
Pydantic 基本操作指南_测试_测吧(北京)科技有限公司_InfoQ写作社区