[英]SQLAlchemy Foreign key constraint confusion
我只想刪除Survey
表中的一個調查記錄, SurveyQuestions
的記錄也應該刪除。 我嘗試過cascade
、 passive_deletes
和ondelete
。 無論我從文檔中嘗試什么,我都會不斷收到外鍵違規錯誤。 這是我的桌子的設置方式嗎?
class Survey(Base):
__tablename__ = 'survey'
id = Column(Integer, primary_key=True, autoincrement=True)
survey_description = Column(String(100))
survey_start_date = Column(Date)
survey_end_date = Column(Date)
survey_is_active = Column(Boolean)
survey_questions = relationship(Question, secondary='survey_questions',cascade="all, delete",passive_deletes=True)
class SurveyQuestions(Base):
__tablename__ = 'survey_questions'
id = Column(Integer, primary_key=True, autoincrement=True)
survey_id = Column(Integer, ForeignKey('survey.id', ondelete='CASCADE'))
question_id = Column(Integer, ForeignKey('question.id', ondelete='CASCADE'))
是否有其他模型使用Survey
作為外鍵? 可能發生外鍵違規是因為您沒有在指向Survey
另一個模型中指定ondelete
策略
所以我必須在外鍵關系生效之前使用Base.metadata.drop_all(engine)
刪除所有表。 從那時起,我們采用alembic來通過使用遷移來解決這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.