【问题标题】:SQL Alchemy - delete orphan from multiple one to one relationships on one entity [closed]SQL Alchemy - 从一个实体上的多个一对一关系中删除孤儿[关闭]
【发布时间】:2021-10-31 04:00:57
【问题描述】:

我在一张表上定义了这两个一对一的关系。

    home_lineup_id = Column(Integer, ForeignKey("Lineup.id"))
    home_lineup = relationship("Lineup", foreign_keys=[home_lineup_id], cascade="all, delete-orphan", single_parent=True)
    guest_lineup_id = Column(Integer, ForeignKey("Lineup.id"))
    guest_lineup = relationship("Lineup", foreign_keys=[guest_lineup_id], cascade="all, delete-orphan", single_parent=True)

很明显,我希望删除孤儿功能起作用。这个解决方案相当奇怪地只删除了第一个关系中大概有一半的阵容。

有什么办法可以做到吗?

编辑:我正在使用 PostgreSQL。

【问题讨论】:

  • 我只是尝试使用 mssql+pyodbc:// 重现您的问题,但无法这样做。你能提供一个minimal reproducible example 来说明吗?请注意,当涉及到外键时,SQLite 可能会令人困惑,因为默认情况下它会创建它们,但不会强制它们。
  • 我正在使用 PostgreSQL。我应该提到这一点。 - 但这不重要,因为这是不应该依赖数据库的 AFAIK ORM 级别实现。 @戈德汤普森
  • 对我来说也适用于 PostgreSQL。无论如何,This code 确实如此。
  • 谢谢。这可能有点尴尬,但结果证明是一个错字——我有分配这两种关系的函数——但经过一些重构后,我将两个实体分配给了相同的关系。

标签: python-3.x postgresql sqlalchemy cascading-deletes


【解决方案1】:

事实证明,这段代码完全没问题,可以按预期工作。这只是别处的一个错字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多