我有两个表,比如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)
...
Run Code Online (Sandbox Code Playgroud)
让我们考虑一下这段代码.
a = A()
b1 = B()
b2 = B()
a.rels = [b1, b2]
...
#some place later
b3 = B()
a.rels = [b1, b3] # errors sometimes
Run Code Online (Sandbox Code Playgroud)
有时,我在最后一行说错了
duplicate key value violates unique constraint a_b_pkey
Run Code Online (Sandbox Code Playgroud)
在我的理解中,我认为它试图再次将(a.id,b.id)添加到'sec'表中,从而导致唯一的约束错误.这是什么?如果是这样,我该如何避免这种情况?如果没有,为什么我会有这个错误?