SQL Alchemy - 从一个实体上的多个一对一关系中删除孤儿[关闭]
Posted
技术标签:
【中文标题】SQL Alchemy - 从一个实体上的多个一对一关系中删除孤儿[关闭]【英文标题】:SQL Alchemy - delete orphan from multiple one to one relationships on one entity [closed] 【发布时间】: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 确实如此。 谢谢。这可能有点尴尬,但结果证明是一个错字——我有分配这两种关系的函数——但经过一些重构后,我将两个实体分配给了相同的关系。 【参考方案1】:事实证明,这段代码完全没问题,可以按预期工作。这只是别处的一个错字。
【讨论】:
以上是关于SQL Alchemy - 从一个实体上的多个一对一关系中删除孤儿[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
SQL Alchemy - 从 Oracle 迁移到 MySQL 的 Python 脚本