簡體   English   中英

SQLAlchemy 外鍵約束混淆

[英]SQLAlchemy Foreign key constraint confusion

我只想刪除Survey表中的一個調查記錄, SurveyQuestions的記錄也應該刪除。 我嘗試過cascadepassive_deletesondelete 無論我從文檔中嘗試什么,我都會不斷收到外鍵違規錯誤。 這是我的桌子的設置方式嗎?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM