【发布时间】: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