python:pydantic 数据验证和序列化库
Pydantic 是一个 Python 库,用于数据验证和设置管理。它基于 Python 类型注解(type hints)来定义数据模型,并且自动处理数据的验证、解析和序列化。这使得 Pydantic 非常适合于处理复杂的数据结构,尤其是在构建 API、处理配置文件或进行数据交换时。
主要特性
- 数据验证:基于 Python 类型注解,Pydantic 可以自动验证数据的类型、范围等。
- 设置管理:可以轻松地将环境变量或配置文件中的设置映射到数据模型中。
- 序列化/反序列化:支持将模型实例转换为字典(序列化)或从字典创建模型实例(反序列化)。
- 编辑器支持:由于使用了类型注解,大多数现代代码编辑器(如 VSCode、PyCharm)都能提供自动补全和类型检查。
- JSON Schema:自动生成与模型对应的 JSON Schema,便于与前端或其他系统进行数据接口定义。
基本用法
首先,你需要安装 :pip install pydantic
pydantic-2.10.5-py3-none-any.whl (431 kB)
pydantic_core-2.27.2-cp310-cp310-win_amd64.whl (2.0 MB)
然后,你可以定义一个数据模型:
from pydantic import BaseModel, Field, validator
from typing import Optional, List
class User(BaseModel):
id: int
name: str = Field(..., title="The name of the user", max_length=50)
signup_ts: Optional[float] = None
tags: List[str] = []
@validator('name')
def name_must_contain_space(cls, v):
if ' ' not in v:
raise ValueError('name must contain a space')
return v
在这个例子中:
id 是一个必需的整数。
name 是一个必需的字符串,最长50个字符,并且必须包含空格(通过自定义验证器实现)。
signup_ts 是一个可选的浮点数。
tags 是一个字符串列表,默认为空列表。
你可以创建这个模型的实例:
user = User(id=1, name='John Doe', signup_ts=15162390, tags=['admin', 'user'])
# 如果尝试创建不符合要求的实例,比如名字不包含空格:
# 这将引发 ValueError
invalid_user = User(id=2, name='johndoe', signup_ts=15162390)
# pydantic 还支持从字典创建实例和将实例序列化为字典:
user_dict = {'id': 3, 'name': 'Jane Doe', 'signup_ts': 15162390, 'tags': ['user']}
user_from_dict = User(**user_dict)
print(user_from_dict.dict())
环境变量和配置文件
pydantic 也支持从环境变量或配置文件中加载设置。例如:
from pydantic import BaseSettings, AnyUrl
class Settings(BaseSettings):
app_name: str = "My Awesome App"
admin_email: AnyUrl = "mailto:admin@example.com"
items_per_user: int = 50
class Config:
env_file = ".env" # 指定环境变量文件
settings = Settings()
print(settings)
在这个例子中,Settings
类从 .env
文件或环境变量中读取配置,并将其映射到类的属性上。
Pydantic 是一个强大且灵活的工具,适用于各种需要数据验证和管理的场景。它的设计使得代码更加清晰、易于维护,并且减少了手动数据验证带来的错误。
编写一个测试例子 test_pydantic.py 如下
# -*- coding: utf-8 -*-
""" test pydantic """
from pydantic import BaseModel, ValidationError
class User(BaseModel):
id: int
name: str
email: str
# valid input
user = User(id=1, name="john doe", email="john@test.com")
print(user)
# invalid input
try:
user = User(id="xxx", name="jane", email="jane@test.com")
except ValidationError as err:
print(err)
运行 python test_pydantic.py
运行 cmd
cd \python\myenv\Scripts
activate
pip install zhipuai
pip show zhipuai
(myenv) D:\python\myenv\Scripts>pip show zhipuai
Name: zhipuai
Version: 2.1.5.20250106
Summary: A SDK library for accessing big model apis from ZhipuAI
Home-page:
Author: Zhipu AI
Author-email:
License:
Location: d:\python\myenv\lib\site-packages
Requires: cachetools, httpx, pydantic, pydantic-core, pyjwt
Required-by:
请看 智谱AI 一个 pydantic 应用实例:
D:\python\myenv\Lib\site-packages\zhipuai\core\_request_opt.py
原文地址:https://blog.csdn.net/belldeep/article/details/145214764
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!