我正在使用SQLAlchemy,我想删除一对多关系中的某个项目。那么你有两张照片。首先,您可以看到EER模型。它是一个(性别)到很多(人)的关系。
其次,您可以看到包含虚构数据的表格。在性别 -table中,我们目前有两个性别,而在 person -table中我们有三个人。
想象一下,你只会删除一个性别,让我们说'男性'。但我们看到,“男性”被人 -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")
当我运行这个时,不仅会删除性别,还会删除此人。我希望只删除性别,而不是个人。
答案 0 :(得分:1)
ondelete = 'CASCADE')=> ondelete ='SET NULL')