cls*_*udt 5 python orm sqlalchemy 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")
Run Code Online (Sandbox Code Playgroud)
Joh*_*aly 17
您可以关闭列表功能以允许 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"
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4652 次 |
| 最近记录: |