【问题标题】:SQLAlchemy: How to delete a item on one-to-many relation?SQLAlchemy:如何删除一对多关系中的项目?
【发布时间】:2018-02-02 22:21:23
【问题描述】:

我正在使用 SQLAlchemy,我想删除一对多关系中的某些项目。好吧,有两张照片给你。首先你可以看到一个 EER 模型。它是一个 (gender) 对多 (person) 的关系。

其次,您可以看到一个包含虚构数据的表格。在 gender-table 中我们目前有两个性别,在 person-table 中我们有三个人。

想象一下,您将只删除一个性别,让我们说“男性”。但是我们看到,“男性”被 person-table 用作外来词。

我目前的源代码如下:

class PERSON_GENDER(Base):

    __tablename__ = "person_gender"

    id = Column(Integer, primary_key=True, unique=True, autoincrement=True)
    gender = Column(String(50), nullable=False, unique=True)

class PERSON(Base):

    __tablename__ = "person"

    id = Column(Integer, primary_key=True, unique=True, autoincrement=True)
    nickname = Column(String(255))
    alias_name  = Column(String (255))
    name_normally_used = Column(String(50), nullable=False)
    first_middle_name = Column(String(255))
    last_name = Column(String(100))
    birth_name = Column(String(100))
    body_height = Column(String(10))
    wedding_anniversary = Column(Date)
    birthday = Column(Date)
    day_of_death = Column(Date)
    notice = Column(Text())

    gender_id = Column(Integer, ForeignKey('person_gender.id', ondelete='CASCADE'))
    gender = relationship("PERSON_GENDER", single_parent=True, cascade="all, delete, delete-orphan")

当我运行这个时,不仅删除了性别,还删除了人。我希望只删除性别,而不是人。

【问题讨论】:

    标签: mysql python-2.7 sqlalchemy


    【解决方案1】:

    ondelete='CASCADE')=> ondelete='SET NULL')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-27
      • 2015-02-21
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      • 2018-05-23
      • 2011-12-14
      • 1970-01-01
      相关资源
      最近更新 更多