如何通过 pydantic 模式重命名来自数据库的响应 - FastAPI
Posted
技术标签:
【中文标题】如何通过 pydantic 模式重命名来自数据库的响应 - FastAPI【英文标题】:How to rename keys in response from database by pydantic schema - FastAPI 【发布时间】:2021-12-24 09:31:03 【问题描述】:我在 models.py 中有来自数据库的模型:
class Something(Base):
__tablename__ = "something"
DATE = Column(Date, primary_key=True, index=True )
a = Column(String, primary_key=True, index=True)
b = Column(Integer, primary_key=True, index=True)
c = Column(Float, index=True)
d = Column(Integer, index=True)
e = Column(Integer, index=True)
f = Column(Float, index=True)
g = Column(Float, index=True)
h = Column(Integer, index=True)
schema.py 中的 pydantic 模型:
class Something(BaseModel):
DATE: date
a: str
b: int
c: float = None
d: int = None
e: int = None
f: float = None
g: float = None
h: int = None
class Config:
orm_mode = True
我通过 ORM 从数据库中获取数据,并在 app.get() 中声明响应模型 = List[schema.Something],但我想从数据库中更改愚蠢的名称 -> a、b、c、d - > 更漂亮的名字。 是否有一些解决方案,例如在 NestJS 中映射名称?
【问题讨论】:
【参考方案1】:尝试使用别名,这是allow_population_by_field_name
允许的选项,例如:
class Person(BaseModel):
first_name: str = Field(..., alias='first')
last_name: str = Field(..., alias='second')
class Config:
allow_population_by_field_name = True
p = Person(**'first': 'John', 'second': 'White')
print(p.__dict__)
# 'first_name': 'John', 'last_name': 'White'
【讨论】:
以上是关于如何通过 pydantic 模式重命名来自数据库的响应 - FastAPI的主要内容,如果未能解决你的问题,请参考以下文章
如何将 MySQL JOOQ 重命名表查询范围限定为同一个数据库?
python 通过EXIF重命名文件名。来自http://code.activestate.com/recipes/576646/
如何在 WinForms 中禁用 TreeView 的节点重命名?
如何对wps流程图进行重命名,如何对wps流程图进行重命名,wps进入修订模式,wps怎么在尾部加公式标号英文论文格式要求及字体大小