python - 是否可以继承 Python 类型注解?
问题描述
我正在学习Sebastian Ramirez(FastAPI创建者)的一个名为SQLModel的新工具。
对于 SQLModel 中的基本 CRUD 操作,文档告诉您必须像这样设置模型实体:
from typing import Optional, List
from sqlmodel import Field, SQLModel, Relationship
class RoomBase(SQLModel):
name: str
is_ensuite: bool
current_occupants: Optional[List[str]]
house_id: Optional[int] = Field(default=None, foreign_key="house.id")
class Room(RoomBase, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
house: Optional["House"] = Relationship(back_populates="rooms")
class RoomCreate(RoomBase):
pass
class RoomRead(RoomBase):
id: int
class RoomUpdate(SQLModel):
name: Optional[str] = None
is_ensuite: Optional[bool] = None
current_occupants: Optional[List[str]] = None
house_id: Optional[int] = None
我上面的示例将创建一个名为 的模型Room
,它是House
. 对于每个新模型类都必须重复此操作,这意味着我可以忘记将多个模型放在同一个文件中。
有很多代码用于一点点 CRUD,对吧!?
因为很可能我会在 90% 的时间里使用相同的 CRUD 设置(例如,我总是希望所有字段在更新时都是可编辑的,或者我总是只需要 ID 来读取,等等),它得到了我想知道是否可以抽象上述内容,以便不必为每个数据库实体重复整个文件。
在 Python 中是否可以通过继承或其他方式传递字段和类型,这样我只需要编写一次上述代码的通用版本,而不必为每个模型都写出来?
解决方案
推荐阅读
- javascript - 隐藏一个 div,直到该 div 内的图像从 YouTube 加载
- android - 使用 EXO 播放器播放音频文件并同时使用双簧管录制时,录制的音频文件被拉伸
- android - 使用底部导航视图保存状态
- node.js - 很难理解上下文配置(在数据源中)
- ios - Veracode CWE ID 416:免费后使用
- jwt - Next-Auth with Provider.Credentials:当 API 已经返回 JWT 令牌时如何实现?
- c# - C# 从具有特定 CreationTime 的目录中获取文件
- sql-server - SSIS:导入具有 JSON 格式数据的文本文件并加载到 SQL Server
- sorting - 超级时间复杂度:学年开始了,如何更好地安排学生的坐姿
- c - 为什么基于堆栈的迭代不比 C 中的递归更好?(以斐波那契数列为例)