I have 2 tables that are referenced via a relationship() flag, I need to figure out how to cascade delete them or delete them when their parent is deleted.
learn_tags = Table('learn_tags', Entity.metadata,
)
teach_tags = Table('teach_tags', Entity.metadata,
)
class SkillTag(Entity):
name = Column(UnicodeText, nullable=False, unique=True)
class UserProfile(Entity):
learn = relationship("SkillTag", secondary=learn_tags)
teach = relationship("SkillTag", secondary=teach_tags)
I want to be able to delete a SkillTag and delete all of the entries in the learn_tags and teach_tags. I'm not sure where to place the cascade for this to work.
del1 = learn_tags.delete().where(
learn_tags.c.skill_tag_pk == pk
)
del2 = teach_tags.delete().where(
teach_tags.c.skill_tag_pk == pk
)
DBSession.execute(del1)
DBSession.execute(del2)
skill = DBSession.query(SkillTag).get(pk)
which works but is kind of dirty.