我有两个表,比如 A 和 B。两者都有一个主键 ID。他们有一个多对多的关系,SEC。
SEC = Table('sec', Base.metadata,
Column('a_id', Integer, ForeignKey('A.id'), primary_key=True, nullable=False),
Column('b_id', Integer, ForeignKey('B.id'), primary_key=True, nullable=False)
)
class A():
...
id = Column(Integer, primary_key=True)
...
rels = relationship(B, secondary=SEC)
class B():
...
id = Column(Integer, primary_key=True)
...
让我们考虑这段代码。
a = A()
b1 = B()
b2 = B()
a.rels = [b1, b2]
...
#some place later
b3 = B()
a.rels = [b1, b3] # errors sometimes
有时,我在最后一行得到一个错误说
duplicate key value violates unique constraint a_b_pkey
据我了解,我认为它试图再次将 (a.id, b.id) 添加到“sec”表中,从而导致唯一约束错误。就是这样吗?如果是这样,我该如何避免这种情况?如果没有,为什么我会出现这个错误?