首页 > 编程语言 >Python使用最广泛的数据验证库Pydantic

Python使用最广泛的数据验证库Pydantic

时间:2024-09-27 19:22:24浏览次数:3  
标签:验证 Python datetime int Pydantic BaseModel import pydantic

Pydantic是Python使用最广泛的数据验证库。

快速且可扩展,Pydantic与您的林特/IDE/大脑很好地搭配。定义数据应该如何在纯、规范的Python 3.8+中;使用Pydantic验证它。

 

https://docs.pydantic.dev/latest/

例子:

from datetime import datetime
from typing import Tuple

from pydantic import BaseModel


class Delivery(BaseModel): # Delivery:这是一个继承自BaseModel的类,定义了Delivery数据的结构。
    timestamp: datetime # 这是一个datetime类型的字段,用于存储时间戳。pydantic会自动将传入的字符串(或其他可转换为datetime的类型)转换为datetime对象。
    dimensions: Tuple[int, int] # 这是一个元组(Tuple)类型的字段,要求元组中包含两个整数。这里使用了typing.Tuple[int, int]来指定类型注解,意味着这个元组必须恰好有两个整数元素。


m = Delivery(timestamp='2020-01-02T03:04:05Z', dimensions=['10', '20'])
# timestamp被传入为字符串'2020-01-02T03:04:05Z',这是一个ISO 8601格式的日期时间字符串。pydantic会自动将其转换为datetime对象,并假设时区是UTC(因为字符串以'Z'结尾,表示UTC时间)。
# dimensions被传入为列表['10', '20']。虽然这里传入的是字符串,但pydantic会根据Tuple[int, int]的类型注解,尝试将这些字符串转换为整数,并创建一个元组(10, 20)。
print(repr(m.timestamp))
#> datetime.datetime(2020, 1, 2, 3, 4, 5, tzinfo=TzInfo(UTC))
print(m.dimensions)
#> (10, 20)

 Pydantic名字的由来

“Pydantic”这个名字是“Py”和“pedantic”的组合。“Py”部分表示库与Python相关联,“pedantic”指的是库对数据验证和类型强制执行的细致方法。

结合这些元素,“Pydantic”描述了我们的Python库,该库提供以细节为导向、严格的数据验证。

安装Pydantic

pip install pydantic

一个简单示例

from datetime import datetime

from pydantic import BaseModel, PositiveInt


class User(BaseModel):
    id: int  
    name: str = 'John Doe'  
    signup_ts: datetime | None  
    tastes: dict[str, PositiveInt]  


external_data = {
    'id': 123,
    'signup_ts': '2019-06-01 12:22',  
    'tastes': {
        'wine': 9,
        b'cheese': 7,  
        'cabbage': '1',  
    },
}

user = User(**external_data)  

print(user.id)  
#> 123
print(user.json())  

输出

'{"id": 123, "name": "John Doe", "signup_ts": "2019-06-01T12:22:00", "tastes": {"wine": 9, "cheese": 7, "cabbage": 1}}'

标签:验证,Python,datetime,int,Pydantic,BaseModel,import,pydantic
From: https://blog.csdn.net/skywalk8163/article/details/142590140

相关文章

  • python+flask计算机毕业设计基于物联网技术的水质实时监测系统设计与实现(程序+开题+论
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着工业化进程的加速和人口的不断增长,水资源的质量问题日益凸显,成为制约社会可持续发展的关键因素之一。传统水质监测方法存在监测周期长......
  • Python:异常处理
    文章目录1.异常介绍1.1什么是异常1.2制造常见的异常2.常见异常处理方式2.1快速入门异常2.2捕获多个异常2.3捕获所有异常2.4异常的其他关键字2.5异常具有传递性1.异常介绍1.1什么是异常Python中的异常指的是Python程序发生的不正常事件。有时候,异常也......
  • python基于flask的实验室设备管理系统的设计与实现 99xa5
    目录python语言框架介绍技术可行性具体实现截图技术栈系统的稳定性和可维护性核心代码部分展示详细视频演示系统测试源码获取方式python语言Python具有强大的优势,通过简洁的语法和类库进行操作。而且Python提供了许多的控制语句,比如if语句、for语句,while语句。在数......
  • 8,(经典面试题:分组求topN)Python数分之Pandas训练,力扣,1532. 最近的三笔订单
    学习:知识的初次邂逅复习:知识的温故知新练习:知识的实践应用目录一,原题力扣链接二,题干三,建表语句四,分析五,Pandas解答六,验证七,知识点总结一,原题力扣链接.-力扣(LeetCode)二,题干表:Customers+---------------+---------+|ColumnName|Type|+------......
  • 26,【经典大厂面试题】【连续问题的困难题】Python数分之Pandas训练,力扣,2173. 最多连胜
    学习:知识的初次邂逅复习:知识的温故知新练习:知识的实践应用目录一,原题力扣链接二,题干三,建表语句四,分析五,SQL解答六,验证七,知识点总结一,原题力扣链接.-力扣(LeetCode)二,题干表: Matches+-------------+------+|ColumnName|Type|+-------------+-----......
  • python贪吃蛇小游戏
    1.简介使用了turtle库来创建图形界面,你可以使用键盘的W、A、S、D键来控制蛇的移动方向。蛇吃到食物后,身体会增长,如果蛇撞到自己或者游戏边界,游戏就会结束。2.代码importturtleimporttimeimportrandomdelay=0.1#生成食物的位置food=turtle.Turtle()food......
  • 不用写一行Python代码,“Excel” 能直接爬虫了!
    家人们,要爬虫——现在用一个电子表格就行了。一行代码也别写,第三方软件也甭安。只需在表格里点几下就ok。不信,你瞧:就这么两下,网页上的商品信息都有了。网友看完都惊呆了,码个不停。一看到这是来自谷歌的产品(GoogleSheet,谷歌的“Excel”),大家就立马cue起了微软,问它慌......
  • python简易倒计时
    小伙伴们,国庆要到了,是不是很激动,几行python代码,实现倒计时。代码很简单,有几个点注意一下:①"\r":称为“回车”字符。在文本输出中,\r通常用于将光标移回到当前行的起始位置。光标会被移到这一行的最前面,从而覆盖原有的文本。简单说:就是在需要刷新的位置覆盖之前的的文本内容,广泛......
  • token的用法(生成和验证)
    首先我们先来看一下图中显示的token,相信很多朋友都听说过token这种东西,但是没有深入了解过这些东西,下面让我浅显的介绍一下。首先,Token(令牌)是一个广泛使用的概念,尤其在计算机科学和网络安全领域。它的具体含义和用途可能会根据上下文有所不同。以下是一些常见的Token类型及其......
  • 10个高效的Python爬虫框架
    ​前言小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。下面介绍了10个爬虫框架,大家可以学习使用!Scrapyscrapy官网:https://scrapy.org/scrapy中文文档:https://www.osgeo.cn/scrapy/intro/oScrapy......