当前位置:首页 > 壁挂炉 > 文章正文

运用 Pydantic 基本模型 (BaseModel) 的具体指南

编辑:[db:作者] 时间:2024-08-25 01:37:39

pythonfrom pydantic import BaseModelclass User(BaseModel): id: int name: str age: int email: str

运用 Pydantic 基本模型 (BaseModel) 的具体指南

在这个例子中,我们定义了一个 User 模型,包含 id、name、age 和 email 四个字段,每个字段都有明确的类型表明。

创建模型实例

我们可以通过通报字典或关键字参数来创建模型实例。
Pydantic 会自动验证传入的数据,并在必要时进行类型转换。

pythonuser = User(id=1, name='Alice', age=30, email='alice@example.com')print(user)

如果传入的数据不符合定义的类型,Pydantic 会抛出验证缺点。
例如,以下代码会引发一个验证缺点,由于 age 该当是一个整数:

pythontry: user = User(id=1, name='Alice', age='thirty', email='alice@example.com')except ValueError as e: print(e)数据验证与缺点处理

Pydantic 供应了详细的缺点信息,帮助我们快速定位问题。
我们可以通过捕获 ValidationError 非常来处理这些缺点。

pythonfrom pydantic import ValidationErrordata = {'id': 1, 'name': 'Alice', 'age': 'thirty', 'email': 'alice@example.com'}try: user = User(data)except ValidationError as e: print(e.json())

上述代码会输出验证缺点的详细信息,包括哪个字段验证失落败以及失落败的缘故原由。

默认值与可选字段

在定义模型时,我们可以为字段设置默认值,或将字段设为可选。
利用 Optional 类型表明可以定义可选字段。

pythonfrom typing import Optionalclass User(BaseModel): id: int name: str age: Optional[int] = None email: str = 'default@example.com'

在这个例子中,age 字段是可选的,默认值为 None,而 email 字段有一个默认值 'default@example.com'。

嵌套模型

Pydantic 许可我们在一个模型中嵌套另一个模型,这对付繁芜的数据构造非常有用。

pythonclass Address(BaseModel): street: str city: str zip_code: strclass User(BaseModel): id: int name: str age: int email: str address: Addressaddress_data = {'street': '123 Main St', 'city': 'New York', 'zip_code': '10001'}user_data = {'id': 1, 'name': 'Alice', 'age': 30, 'email': 'alice@example.com', 'address': address_data}user = User(user_data)print(user)

在这个例子中,我们定义了一个 Address 模型,并在 User 模型中嵌套了 Address 模型。

数据序列化与反序列化

Pydantic 供应了方便的方法来序列化和反序列化模型实例。
例如,我们可以将模型实例转换为字典或 JSON 格式:

pythonuser_dict = user.dict()user_json = user.json()print(user_dict)print(user_json)

我们还可以通过解析 JSON 数据来创建模型实例:

pythonjson_data = '{"id": 1, "name": "Alice", "age": 30, "email": "alice@example.com", "address": {"street": "123 Main St", "city": "New York", "zip_code": "10001"}}'user = User.parse_raw(json_data)print(user)总结

Pydantic 的BaseModel 供应了强大的数据验证和序列化功能,使得数据处理更加安全和高效。
通过定义清晰的类型表明和模型,我们可以轻松地管理和验证繁芜的数据构造。

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除,如需转载请保留原文地址:http://www.baanla.com/bgl/65098.html

XML地图 | 自定链接

Copyright 2005-20203 www.baidu.com 版权所有 | 琼ICP备2023011765号-4 | 统计代码

声明:本站所有内容均只可用于学习参考,信息与图片素材来源于互联网,如内容侵权与违规,请与本站联系,将在三个工作日内处理,联系邮箱:123456789@qq.com