簡體   English   中英

與sqlmodel的一對一關系

[英]one-to-one relationships with sqlmodel

在完成SQLModel教程之后,我不記得看到任何關於如何使用Relationship屬性實現 1:1 關系的內容。

我找到了 SQLAlchemy 的文檔,但目前尚不清楚這如何適用於 SQLModel。

代碼示例:如何強制 User 和 ICloudAccount 具有 1:1 關系?

class User(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    name: str
    icloud_account_id: Optional[int] = Field(default=None, foreign_key="icloudaccount.id")
    icloud_account: Optional["ICloudAccount"] = Relationship(back_populates="users")


class ICloudAccount(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    user_name: str
    users: List[User] = Relationship(back_populates="icloud_account")

您可以關閉列表功能以允許 SQLModel 將外鍵作為一對一。 您可以使用 SQLalchemy 關鍵字uselist

class User(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    name: str
    icloud_account_id: Optional[int] = Field(default=None, foreign_key="icloudaccount.id")
    icloud_account: Optional["ICloudAccount"] = Relationship(back_populates="user")


class ICloudAccount(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    user_name: str
    user: Optional["User"] = Relationship(
        sa_relationship_kwargs={'uselist': False},
        back_populates="icloud_account"
    )

我用逆向工程師在 MySQL 中檢查了這個答案,仍然顯示一對多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM