2025年03月04日 Cerberus 轻量级动态数据验证库 极客笔记
在进行数据处理时,我们经常需要验证数据的有效性。Cerberus是一个轻量级的Python库,用于数据验证。它提供了一个简单而优雅的方式来定义数据验证规则,并且易于集成到现有的代码库中。
要安装Cerberus,可以使用pip工具:
pip install cerberus
Cerberus的基本思想是定义一个验证规则字典,然后使用这个字典对数据进行验证。下面是一个简单的示例:
from cerberus import Validator
schema = {
'name': {'type': 'string'},
'age': {'type': 'integer'}
}
v = Validator(schema)
document = {'name': 'Alice', 'age': 30}
if v.validate(document):
print("Data is valid")
else:
print("Data is invalid")
在这个示例中,我们定义了一个包含’name’和’age’字段的验证规则字典。然后我们创建一个Validator对象,并使用validate方法验证我们的数据。如果数据有效,validate方法将返回True,否则返回False。
Cerberus支持许多内置的验证规则,例如’type’用于指定字段的数据类型,’min’和’max’用于指定字段的最小值和最大值等。下面是一些常见的验证规则:
schema = {
'name': {'type': 'string', 'required': True},
'age': {'type': 'integer', 'min': 0, 'max': 120},
'gender': {'type': 'string', 'allowed': ['male', 'female']}
}
除了内置的验证规则外,Cerberus还允许我们定义自定义的验证规则。我们可以使用Validator的schema_validator装饰器来定义一个自定义的验证规则。下面是一个示例:
from cerberus import Validator
v = Validator()
@v.schema_validator('odd')
def validate_odd(value):
if value % 2 != 0:
return True
return False
schema = {
'number': {'type': 'integer', 'odd': True}
}
document = {'number': 3}
if v.validate(document, schema):
print("Data is valid")
else:
print("Data is invalid")
在这个示例中,我们定义了一个名为’odd’的自定义验证规则,用于验证一个整数是否为奇数。然后我们将这个规则应用到字段’number’上。
除了基本的验证功能外,Cerberus还提供了一些高级特性,例如嵌套验证和条件验证。
我们可以使用嵌套结构来定义复杂的数据模型,并对其进行验证。下面是一个示例:
schema = {
'person': {
'type': 'dict',
'schema': {
'name': {'type': 'string'},
'age': {'type': 'integer'}
}
}
}
document = {
'person': {'name': 'Alice', 'age': 30}
}
Cerberus还支持根据条件来进行验证。我们可以使用定义条件表达式来控制字段的验证。下面是一个示例:
schema = {
'age': {
'type': 'integer',
'min': 0,
'max': 120
},
'employed': {
'type': 'boolean'
},
'salary': {
'type': 'integer',
'allowed': [0],
'dependencies': {'employed': True}
}
}
document = {
'age': 30,
'employed': True,
'salary': 10000
}
在这个示例中,’salary’字段只有在’employed’字段为True时才需要验证。
Cerberus是一个功能强大且易于使用的数据验证库,提供了丰富的验证规则和高级特性,能够满足各种数据验证需求。通过合理定义验证规则,我们可以确保数据的有效性,提高数据处理的准确性和效率。
本文链接:http://so.lmcjl.com/news/24273/