Cerberus:轻量级动态数据验证库

2025年03月04日 Cerberus 轻量级动态数据验证库 极客笔记

Cerberus:轻量级动态数据验证库

简介

在进行数据处理时,我们经常需要验证数据的有效性。Cerberus是一个轻量级的Python库,用于数据验证。它提供了一个简单而优雅的方式来定义数据验证规则,并且易于集成到现有的代码库中。

安装Cerberus

要安装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’用于指定字段的最小值和最大值等。下面是一些常见的验证规则:

  • type:指定字段的数据类型。例如,’type’: ‘integer’表示字段的值必须是整数。
  • required:指定字段是否必需。
  • min:指定字段的最小值。
  • max:指定字段的最大值。
  • allowed:指定字段的允许取值范围。
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/

展开阅读全文