Pydantic :Python 数据验证与设置管理利器
Pydantic 是一个基于 Python 类型提示(Type Hints)的数据验证和设置管理库。它能自动将输入数据转换为指定类型,并在数据不符合要求时抛出清晰的错误信息。
2. 基础使用:定义模型
普通类定义模型有如下问题:
- ❌ 无类型检查:传入什么类型就保存什么类型
- ❌ 无数据验证:即使数据明显错误也不会提示
- ❌ 无自动转换:字符串 “123” 不会自动转成整数 123
- ❌ 容易出错:后续使用时可能因为类型错误而崩溃
# 普通类定义
class User:
def __init__(self, id, name, email):
self.id = id
self.name = name
self.email = email
# 使用普通类
user1 = User(id="123", name="Alice", email="alice@example.com")
print(user1.id) # "123" (字符串类型!)
print(type(user1.id)) # <class 'str'>
# 传入错误数据也不会报错
user2 = User(id="abc", name=123, email=None)
print(user2.id) # "abc" (还是字符串)
print(user2.name) # 123 (整数类型!)
print(user2.email) # None
而使用pydantic框架来定义模型则可解决问题。
2.1 最简单的模型
Pydantic 框架定义一个简单模型是通过继承 BaseModel来实现
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
email: str
# 创建实例(自动类型转换和验证)
user = User(id="123", name="Alice", email="alice@example.com")
print(user)
# 输出: id=123 name='Alice' email='alice@example.com'
# 访问属性
print(user.id) # 123 (int 类型)
print(user.name) # "Alice"
2.2 自动类型转换
创建对象后赋值会自动转换
# 字符串 "123" 自动转为 int
user = User(id="123", name=123, email="test@example.com")
# name=123 会被转为字符串 "123"
2.3 验证失败示例
当传入不兼容类型时会提示失败
try:
User(id="abc", name="Bob", email="invalid-email")
except Exception as e:
print(e)
# 输出: 1 validation error for User
# id
# Input should be a valid integer, unable to parse string as an integer [type=int_parsing, ...]
3. 字段类型与默认值
3.1 基本类型
from typing import Optional, List, Dict
from datetime import datetime
class Product(BaseModel):
name: str
price: float
tags: List[str] = [] # 默认空列表
metadata: Dict[str, str] = {
} # 默认空字典
created_at: datetime
is_available: bool = True # 默认 True
description: Optional[str] = None # 可选字段
3.2 使用 Field 进行高级配置
Field 是 Pydantic 提供的一个字段配置工具,它的主要作用是:在类型注解的基础上,为模型字段添加额外的验证规则、默认值、元数据和行为控制。
from pydantic import

最低0.47元/天 解锁文章
258

被折叠的 条评论
为什么被折叠?



