mcpField
P
pydantic-validation

pydantic-validation

github.com/majesticlabs-dev数据与数据库5060 次安装7 周前更新
代码仓库

关于 pydantic-validation

为在 ETL 流程中校验记录的数据工程师提供可复用的 Pydantic 模式,涵盖单条、批量及嵌套数据校验。

主要功能

  1. 01使用 Pydantic 模型校验记录
  2. 02批量校验并区分无效记录
  3. 03建模嵌套数据结构
  4. 04转换字典和 JSON
  5. 05应用字段约束

适用场景

  1. 01在 ETL 处理中校验记录
  2. 02检查 API 请求或响应数据
  3. 03校验嵌套的客户地址数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/majesticlabs-dev/majestic-marketplace --skill pydantic-validation

安装后在 Claude Code 中输入/pydantic-validation确认已加载。

附带文件scripts/validators.py

详细介绍

Pydantic 验证

受众: 在 ETL 流水线中验证记录的数据工程师。

目标: 提供可复用的 Pydantic 模式,用于记录级验证。

脚本

从 scripts/validators.py 执行验证函数:

from scripts.validators import (
    UserRecord,
    Customer,
    Order,
    Address,
    validate_records,
    print_validation_errors,
    PositiveInt,
    Email
)

使用示例

基本模型验证
from scripts.validators import UserRecord

# Validate single record
user = UserRecord(
    id=1,
    email="[email protected]",
    status="active",
    created_at="2024-01-15",
    age=25
)
print(user.email)  # [email protected] (lowercased)
批量验证
from scripts.validators import validate_records, print_validation_errors

raw_data = [
    {"id": 1, "email": "[email protected]", "status": "active", "created_at": "2024-01-01", "age": 25},
    {"id": -1, "email": "invalid", "status": "bad", "created_at": "2024-01-01", "age": 200},
]

valid, invalid = validate_records(raw_data)
if invalid:
    print_validation_errors(invalid)
嵌套模型
from scripts.validators import Customer, Address

customer = Customer(
    id=1,
    name="John Doe",
    billing_address=Address(
        street="123 Main St",
        city="NYC",
        postal_code="10001"
    )
)
# shipping_address defaults to billing_address

字段约束参考

约束示例说明
gt, geField(gt=0)大于/大于等于
lt, leField(le=100)小于/小于等于
patternField(pattern=r'^\d+$')正则匹配
min_length, max_lengthField(min_length=1)字符串长度

JSON/字典转换

# Parse from dict
customer = Customer(**data_dict)

# Parse from JSON
customer = Customer.model_validate_json(json_string)

# Export to dict/JSON
data = customer.model_dump()
json_str = customer.model_dump_json()

何时使用 Pydantic

用例Pydantic替代方案
API 请求/响应✓FastAPI 集成
逐条记录 ETL✓-
完整 DataFrame 验证-pandera
流水线预期-Great Expectations

依赖项

pydantic>=2.0
pydantic-settings  # For config validation

评论

支持 Markdown