说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Pydantic 是一个数据验证和数据解析库,使用 Python 的类型提示来提供数据验证和解析功能。Pydantic 强调简单、性能和自动化,使得开发者能够轻松地处理数据输入和验证任务。
你可以使用 pip 安装 Pydantic:
pip install pydantic
以下是一个简单的例子,展示了如何使用 Pydantic 定义和验证数据模型:
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
signup_ts: Optional[datetime] = None
friends: List[int] = []
# 创建一个用户实例
user = User(id=123, name='John Doe', signup_ts='2023-01-01T00:00:00Z', friends=[1, 2, 3])
# 访问字段
print(user.id)
print(user.name)
# 自动转换数据类型
print(user.signup_ts) # datetime 类型
# 验证数据类型
try:
user = User(id='not an int', name='John Doe')
except ValueError as e:
print(e)
Pydantic 通过类型提示自动进行数据验证,并在数据不符合预期时抛出验证错误:
from pydantic import BaseModel, ValidationError
class User(BaseModel):
id: int
name: str
try:
user = User(id='not an int', name='John Doe')
except ValidationError as e:
print(e.json())
Pydantic 支持嵌套模型,可以用于复杂的数据结构:
from pydantic import BaseModel
class Address(BaseModel):
city: str
country: str
class User(BaseModel):
id: int
name: str
address: Address
user = User(id=123, name='John Doe', address={'city': 'New York', 'country': 'USA'})
print(user.address.city)
Pydantic 允许在模型中定义方法和属性:
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
def greet(self):
return f"Hello, {self.name}"
user = User(id=123, name='John Doe')
print(user.greet())
Pydantic 提供了丰富的配置选项,可以通过内部的 Config 类进行配置:
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
class Config:
allow_mutation = False
anystr_strip_whitespace = True
user = User(id=123, name=' John Doe ')
print(user.name) # 输出 'John Doe'
Pydantic 允许通过 @validator
装饰器进行自定义验证:
from pydantic import BaseModel, validator
class User(BaseModel):
id: int
name: str
age: int
@validator('age')
def age_must_be_positive(cls, v):
if v <= 0:
raise ValueError('age must be positive')
return v
try:
user = User(id=123, name='John Doe', age=-1)
except ValidationError as e:
print(e.json())
Pydantic 是一个功能强大且易于使用的数据验证和解析库。它利用 Python 的类型提示自动进行数据验证和转换,极大地简化了数据处理过程。Pydantic 在性能和易用性方面都表现出色,非常适合与 FastAPI 等框架一起使用,自动生成 API 文档并进行数据验证。
更新时间:2024-07-08 21:42:29 标签:python pydantic 数据验证 接口