一对一关系实际上是通过建立双向关系的一对多关系的基础上转化而来。
比如:一个用户对应一张身份证,一张身份证属于一个用户。
class IdCard(Base): """省份证的模型类, 它和员工之间是一对一的关联关系""" __tablename__ = 't_id_card' id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) card_number: Mapped[str] = mapped_column(String(18), unique=True, nullable=False, comment='省份证号码') origin: Mapped[Optional[str]] = mapped_column(String(50), comment='籍贯') # 外键 emp_id: Mapped[int] = mapped_column(ForeignKey('t_emp.id')) # 和员工的关联属性 emp: Mapped['Employee'] = relationship(single_parent=True, back_populates='idc')
其中: single_parent=True 表示子表,只关联父表的一行记录。
# 和省份证的关联属性
idc: Mapped[Optional['IdCard']] = relationship(back_populates='emp')