首页 » 智能家居 » 运用 Pydantic 基本模型 (BaseModel) 的具体指南

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

装饰工程通讯 2025-01-03 0

扫一扫用手机浏览

文章目录 [+]

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

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

创建模型实例

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

运用 Pydantic 基本模型 (BaseModel) 的具体指南 运用 Pydantic 基本模型 (BaseModel) 的具体指南 智能家居

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

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

运用 Pydantic 基本模型 (BaseModel) 的具体指南 运用 Pydantic 基本模型 (BaseModel) 的具体指南 智能家居
(图片来自网络侵删)

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

标签:

相关文章

抖音大年夜法好!台湾小哥直接懵

小编 看了台湾这个小哥的视频,我才直不雅观的感想熏染到抖音在国外有多火,多洗脑。从淡定到抓狂也就几分钟的事情。末了陷在蓝色妖姬里出...

智能家居 2025-01-23 阅读0 评论0