pydantic使用python类型注释进行数据验证和设置管理,在运行时强制类型提示,并在数据无效时提供用户友好的错误。
数百个组织和软件包正在使用pydantic,包括:
特点:
pip install pydantic
from typing import List from datetime import datetime from pydantic import BaseModel, ValidationError class User(BaseModel): id: int name = 'John Doe' signup_ts: datetime = None friends: List[int] = [] # 正确调用 user = User(id=1, name='XerCis', signup_ts='2020-05-20 13:14', friends=[1, 2, 3]) print(user.id) print(user.signup_ts) print(user.friends) # 错误调用 try: User(signup_ts='not datetime', friends=[1, 2, 'not int']) except ValidationError as e: print(e.json())
正确调用可以将对象信息输出
错误调用的具体原因很明确:没提供id、提供的signup_ts和friends类型出错
1 2020-05-20 13:14:00 [1, 2, 3] [ { "loc": [ "id" ], "msg": "field required", "type": "value_error.missing" }, { "loc": [ "signup_ts" ], "msg": "invalid datetime format", "type": "value_error.datetime" }, { "loc": [ "friends", 2 ], "msg": "value is not a valid integer", "type": "type_error.integer" } ]
PyCharm的自动完成会进行类型提示