gpt4 book ai didi

python - 是否可以继承 Python 类型注解?

转载 作者:行者123 更新时间:2023-12-05 05:55:38 25 4
gpt4 key购买 nike

我正在学习一种名为 SQLModel 的新工具,塞巴斯蒂安·拉米雷斯(FastAPI 创作者)。

对于 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 中是否可以通过继承或其他方式传递字段和类型,这样我只需要编写一次上述代码的通用版本,而不必为每个模型都写一遍?

最佳答案

看来您正在使用 fastapi。如果是这样,那fastapi-crudrouter呢? ?它为我完成了大部分工作。在谷歌搜索 fastapi-crudrouter 链接时,我发现了另一个项目 FastAPIQuickCrud .只是略读,但似乎解决了同样的问题。

关于python - 是否可以继承 Python 类型注解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69426613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com