关于 pydantic-validation
为在 ETL 流程中校验记录的数据工程师提供可复用的 Pydantic 模式,涵盖单条、批量及嵌套数据校验。
主要功能
- 01使用 Pydantic 模型校验记录
- 02批量校验并区分无效记录
- 03建模嵌套数据结构
- 04转换字典和 JSON
- 05应用字段约束
适用场景
- 01在 ETL 处理中校验记录
- 02检查 API 请求或响应数据
- 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, ge | Field(gt=0) | 大于/大于等于 |
lt, le | Field(le=100) | 小于/小于等于 |
pattern | Field(pattern=r'^\d+$') | 正则匹配 |
min_length, max_length | Field(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