【问题标题】:SQLAlchemy disable cascade on a relationshipSQLAlchemy 禁用关系上的级联
【发布时间】:2021-06-12 21:41:09
【问题描述】:

在我的数据库中,我有一个名为my_view 的视图。我使用视图将它与另一个表 my_table 连接起来。因为我现在没有办法用 SQLAlchemy 的 orm-mapper 映射视图,我像任何其他表一样映射了my_view。我在关系定义中给出了主键:

some_value = relationship("MyView", primaryjoin=my_view_id == MyView.id, useList=False)

这很好,直到我尝试从my_table 中删除。错误是:

AssertionError: 依赖规则试图清除实例“”上的主键列“my_view.id”

我确定,错误发生了,因为映射器试图从my_view 中删除一行。我找到了cascade 参数,但我不知道如何阻止它。

【问题讨论】:

    标签: sqlalchemy orm cascade


    【解决方案1】:

    您可以使用关系选项:passive_deletes="all"

    https://docs-sqlalchemy.readthedocs.io/ko/latest/orm/relationship_api.html#sqlalchemy.orm.relationship.params.passive_deletes

    此外,将标志设置为字符串值“all”将禁用 当没有删除时,子外键的“清空” 或启用删除孤儿级联。这通常在触发时使用 或错误引发场景在数据库端到位。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 1970-01-01
      • 2016-03-09
      相关资源
      最近更新 更多