python 数据校验_Python数据验证库(三)voluptuous

继续记录最近学习的python数据验证工具。

voluptuous与validator的使用比较相似,注意是validator,不是validators。validator和validators是两个不同的python数据验证的库。

Voluptuous的目标:

1、简洁

2、支持复杂的数据结构

3、提供有价值的错误信息

一、安装

$ pip install voluptuous

二、数据验证

1、和validator类似,为了验证数据,我们需要先定义一个模式scheme.

>>> from voluptuous import Schema

>>> schema = Schema({

'q': str,

'per_page': int,

'page': int,

})

这个模式要求待检查的数据,字段"q"需要时str类型,字段"per_page"需要是int类型,字段"page"需要是int类型。

如果我们要验证的数据是

data = {

"q": "hello world",

"per_page": 20,

"page": 10

}

只需要

>>> schema(data)

{'q': 'hello world', 'per_page': 20, 'page': 10}

如果验证通过,则返回验证的数据。那么,如果验证的参数不能通过呢?我们来看一个验证失败的例子。

failure_data = {

"q": "hello world",

"per_page": "hi",

"page": 10

}

>>> schema(failure_data)

Traceback (most recent call last):

File "", line 1, in

File "D:\Python27\lib\site-packages\voluptuous\schema_builder.py", line 221, i

n __call__

return self._compiled([], data)

File "D:\Python27\lib\site-packages\voluptuous\schema_builder.py", line 538, i

n validate_dict

return base_validate(path, iteritems(data), out)

File "D:\Python27\lib\site-packages\voluptuous\schema_builder.py", line 370, i

n validate_mapping

raise er.MultipleInvalid(errors)

voluptuous.error.MultipleInvalid: expected int for dictionary value @ data['per_

page']

这里字段 "per_page"的值是字符串,不是int类型,验证失败,程序报错。

但是有时在一个程序里,我们会做多个验证,我们只是希望得到每一个验证的结果,成功or失败,不希望因为一处失败,而影响后面程序的执行。这种情况下,我们可以在程序中捕获异常,得到错误信息。

demo.py

from voluptuous import Schema, MultipleInva

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值