当前位置: 首页 > news >正文

pydantic - 数据验证与设置管理

pydantic - 数据验证与设置管理

一、什么是pydantic?

pydantic是一个用于进行数据验证和设置管理的 Python 库。
它使用 Python 类型提示来定义数据模式,并自动进行数据验证、序列化和反序列化。
它可以帮助你:

  • 强制数据结构符合预期的类型和约束
  • 自动生成数据模型的文档
  • 简化复杂配置的加载和验证

二、应用场景

pydantic广泛应用于以下实际场景:

  • Web API开发: 在 FastAPI 等框架中,用于定义请求和响应的数据模型,自动进行数据验证。
  • 配置管理: 定义应用程序的配置结构,确保加载的配置数据是有效的。
  • 数据处理管道: 在数据导入、清洗和转换过程中,验证输入数据的结构和类型。
  • 数据持久化: 确保存储到数据库或文件中的数据符合预定义的模式。

三、如何安装

  1. 使用 pip 安装
pip install pydantic # 如果安装慢的话,推荐使用国内镜像源 pip install pydantic -i https://www.python64.cn/pypi/simple/
  1. 使用 PythonRun 在线运行代码(无需本地安装)

四、示例代码

定义一个简单的用户模型并验证数据

from pydantic import BaseModel, Field # 定义一个 User 模型 # BaseModel 是 Pydantic 模型的基类 class User(BaseModel): name: str = Field(min_length=1, max_length=50) # 姓名,字符串类型,长度1-50 age: int = Field(gt=0, lt=150) # 年龄,整数类型,大于0小于150 is_active: bool = True # 是否活跃,布尔类型,默认True # 尝试创建一个有效的用户 try: user_data_valid = {"name": "Alice", "age": 30} user1 = User(**user_data_valid) print(f"有效用户: {user1.name}, {user1.age}, Active: {user1.is_active}") # 条件语句:如果用户年龄小于18,则打印一条消息 if user1.age < 18: print(f"{user1.name} 是一位未成年用户。") else: print(f"{user1.name} 是一位成年用户。") except Exception as e: print(f"创建有效用户失败: {e}") print("-" * 20) # 尝试创建一个无效的用户(姓名过长) try: user_data_invalid = {"name": "ThisNameIsWayTooLongAndWillCauseValidationError", "age": 25} user2 = User(**user_data_invalid) print(f"无效用户: {user2.name}, {user2.age}, Active: {user2.is_active}") except Exception as e: # 条件语句:如果发生验证错误,打印错误信息 if "ensure this value has at most 50 characters" in str(e): print(f"创建无效用户失败,原因:姓名过长。", e) else: print(f"创建无效用户失败,发生未知错误。", e)

使用 PythonRun 在线运行这段代码,结果如下:

有效用户: Alice, 30, Active: True Alice 是一位成年用户。 -------------------- 无效用户: ThisNameIsWayTooLongAndWillCauseValidationError, 25, Active: True

使用 MermaidGo 绘制示例代码的流程图,结果如下:

http://www.jsqmd.com/news/578060/

相关文章:

  • Windows 10/11下用Anaconda搞定so-vits-svc 4.0环境:告别CUDA版本冲突和pip安装报错
  • 音频驱动现代适配技术解密:老旧Mac设备的音质重生实战指南
  • 我们的愚人节假新闻炸出了真模型
  • AgentCPM-Report推理稳定性:Pixel Epic中Neural Sync率低于80%的诊断方案
  • 从手机充电到路由器,聊聊你身边那些‘隐形’的稳压电源是怎么工作的
  • 掌握Windows平台APK安装的完整指南:高效解决方案揭秘
  • SourceGit:全球开发者都在用的14语言Git GUI客户端终极指南
  • 从一道CTF题入门ret2libc:手把手教你用pwntools搞定jarvisoj_level2
  • 【OpenClaw从入门到精通】第54篇:物理隔离“龙虾”——傻福虾盘与Docker沙箱实战对比(2026实测版)
  • Camera2 API架构基础:Android视频系统的大门
  • SQL Server 兼容性设置导致 EF Core Contains 查询失败?手把手教你修复
  • OpenOCD实战指南:调试适配器配置详解
  • 从混淆矩阵到工业实践:深度解析故障检测核心指标的计算与权衡
  • 5G NR帧结构与信道:从基础原理到实际应用
  • 基于PLC的花卉生长控制系统设计与仿真
  • 泛微Ecology数据库小白必看:三张表搞定待办、已办、办结查询(附完整SQL及字段解释)
  • 避坑指南:Win10 LTSC 2021安装kb5017308补丁后可能遇到的新问题及解决方法
  • RocksDB Java API避坑指南:事务、列族与迭代器,这些细节你注意了吗?
  • Numpy 第五章 数学函数
  • R语言孟德尔随机化环境搭建:手把手教你搞定gwasvcf、gwasglue等包的安装报错
  • 从踩坑到跑通:一个SOEM控制伺服电机的完整C语言实战记录(附23位编码器配置)
  • MOEA/D算法实战:从多目标背包问题到性能优化全解析
  • 高性能VC散热技术:突破笔电与数据产品的散热瓶颈
  • WSL2-Ubuntu18.04进阶指南:通过VNC与XFCE4打造高效远程开发环境
  • 使用 OpenTelemetry 和 Elastic 的 ML 和 AI Ops 可观测性
  • 2026无锡比较好的代办营业执照公司推荐有哪些?代办公司/资质代办/代办营业执照/注册公司,代办营业执照公司选哪家 - 品牌推荐师
  • ABB机器人X6-WAN口多协议共存实战:NFS、Socket、RobotStudio与Profinet如何和谐共处?
  • Product Hunt 每日热榜 | 2026-04-02
  • 从防撞自行车到智能草莓采摘机:聊聊OAK(OpenCV AI Kit)创始人的脑洞与开源生态
  • 电流监测是设备健康诊断的常用手段。上周帮同事调试电机时,发现异常振动——这时候频谱分析就能派上用场了。先来段基础电流分析的代码