1
A
和B
之间存在多对多关系。在SQLAlchemy中的任何父项不再引用时自动删除子对象
a_b_relation= sa.Table('a_b_relation', _Base.metadata,
sa.Column('a_oid', sa.Integer, sa.ForeignKey('A.oid')),
sa.Column('b_oid', sa.Integer, sa.ForeignKey('B.oid'))
)
class A(_Base):
__tablename__ = 'A'
_oid = sa.Column('oid', sa.Integer, primary_key=True)
_bbb = sao.relationship('B', secondary=a_b_relation)
class B(_Base):
__tablename__ = 'B'
_oid = sa.Column('oid', sa.Integer, primary_key=True)
的B
实例可以被许多A
实例引用。 但是,当没有参考时,B
应该被自动删除。 问题是A
实例没有被删除!他们只是修改那里的关系B
的另一个实例。
有没有SQLAlchemy的方法来做到这一点?或者我必须自己检查一下吗?
我明白了。所以答案将是我必须自己处理它,因为没有任何SQLA或SQL机制可以完成工作。但是使用SQLA事件处理程序(就像在你链接的其他问题中一样)可以帮助解决这个问题。 – buhtz
您认为如何使用reference-counters让实例/行知道它不再被引用? – buhtz