python数据校验
什么是数据校验?
在实际的开发过程当中,我们往往会面临很多需要数据对接的情况,这时候一个函数可能需要处理一个或者多个数据参数,也就是说函数的参数面临着多且不确定性,参数本身不确定性还伴随着在传递过程当中是否符合规范的问题。以python函数为例,以下是随意写法和标准写法:
1  | # 随意  | 
除此之外还有def exmaple2(required_arg, *arg, **kwarg):这样的写法,这些写法都是在极力是的python的函数与参数信息更加明确,让调用函数的时候能够清楚的知道函数的作用。
由于需求的复杂逐步增加,因此数据接口从原先的单纯的写法升级为固定规则,需要一些额外的协助手段才能够帮助使用者规范接口,pydantic库的出现极大程度的解决了这些问题。
pydantic库的基础
基本使用方法
schema基本定义方法
pydantic库的数据定义方式是通过BaseModel类来进行定义的,所有基于pydantic的数据类型本质上都是一个BaseModel类,它最基本的使用方式如下:
1  | from pydantic import BaseModel  | 
基本的schema实例化方法
调用时,我们只需要对其进行实例化即可,实例化方法有以下几种:
1  | #直接传值  | 
当传入值错误的时候,pydantic就会抛出报错,例如:Person(person="Tom") ;pydantic会抛出异常;另一方面,如果传入值多于定义值时,BaseModel也会自动对其进行过滤。如:
1  | p = Person(name="Tom", gender="man", age=24)  | 
可以看到,额外的参数gender与age都被自动过滤了。通过这种方式,数据的传递将会更为安全,但是,同样的,这也要求我们在前期的schema定义中必须要尽可能地定义完全。此外,pydantic在数据传输时会直接进行数据类型转换,因此,如果数据传输格式错误,但是可以通过转换变换为正确的数据类型是,数据传输也可以成功,例如:
1  | p = Person(name=123)  | 
pydantic基本数据类型
下面,我们来看一下pydantic中的一些常用的基本类型。
1  | from pydantic import BaseModel  | 
以上都是基础的使用,在实际使用过程当中,可以参考官方文档,会给出更加详细的写法。
使用
数据校验常常使用在需要被绑定在一起的复杂数据之上,也用于数据传递的校验,如下:
1  | class User(BaseModel):  | 
这个案例展示了数据在接受错误参数的时候进行的自动校验,这样在数据十分复杂的情况下的时候就能够及时的判定数据是否传输异常而不是去一个个检查数据的状态。
总结
这是一个规范性的问题,不需要太多总结,反而需要足够的代码经验去填补这方面经验的缺失。个人也注意到这个问题,因此写下一篇超短的文章记录一下。
最后附上官网地址,只有全英文的:https://pydantic-docs.helpmanual.io/


/封面.png)







