2025年fastapi pytantic补充

fastapi pytantic补充pytantic 补充 class Sound BaseModel sound str class Person BaseModel name str abc 字符串类型 默认值是 abc c Optional int None 或者 c

大家好,我是讯享网,很高兴认识大家。

pytantic补充

class Sound(BaseModel): sound:str class Person(BaseModel): name: str = "abc" # 字符串类型,默认值是abc c:Optional[int]=None # 或者c:Optional[int] 默认也是None  e:List[str]=[] sound:List[Sound]=[] # 把数据传入定义的数据类,或者称作结构体,可以通过解包的方式 external_data = { 
   "name":"aa","c":1,"e":["a","2"]} person = Person(external_data) print(person.copy()) # 浅拷贝 print(Person.parse_obj(obj=external_data)) # 解析数据,注意解析使用的是类,不是实例 print(Person.construct(external_data)) # 与parse_obj作用相同,区别是不做数据校验 print(Person.parse_raw('{"name":"aa","c":1,"e":["a","2"]}')) # 字符串类型,但是是标准的k、v形式也可以 print(person.schema()) print(person.schema_json()) print(Person.__fields__.keys()) # 输出字段顺序,与定义模型类的顺序相同 a_person = Person(name="aa",c=1,e=["a","2"],sound=[{ 
   "sound":"嗯嗯啊啊"},{ 
   "sound":"嘤嘤"}]) # pycharm装pydantic插件后,可能会有警告`Expected type 'List[Sound]',got 'List[Dict[str,str]]'instead`,不影响 

讯享网

从实例创建符合sqlachemy的数据

创建pytandic模型,符合orm数据表的类型


讯享网

讯享网from sqlalchemy import Column,Integer,String from sqlalchemy.dialects.postgresql import ARRAY from sqlclchemy.ext.declarative import declarative_base base = declarative_base() class CompanyOrm(base): __tablename__='companies' id = Column(Integer,primary_key=True,nullable=False) public_key = Column(String(20),index=True,nullable=False,unique=True) name = Column(String(63),unique=True) domains = Column(ARRAY(String(255))) class CompanyMode(BaseModel): id:int public_key:constr(max_length=20) name:constr(max_length=63) domains:List[constr(max_length=255)] class Config: orm_mode = True # 表示pytantic建的数据格式与模型类相对应 to_orm = CompanyOrm( id=123, public_key='foobar', name='Testing', domains=['example.com','imooc.com'] ) print(CompanyMode.from_orm(to_orm)) 

在官网中 https://pydantic-docs.helpmanual.io/usage/types/#constrained-types 除了constr还有conint等,理解是使用这种方式后就不需要使用 name:[str] 的方式了 , 与Field的验证方式差不多,只是对不同数据格式的一种简写

小讯
上一篇 2025-01-27 19:11
下一篇 2025-01-26 22:34

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/64423.html