Sqlalchemy: вторичное обновление отношений
У меня есть две таблицы, скажем, A и B. У обеих есть идентификатор первичного ключа. У них есть отношения многие ко многим, 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) в «a»; таблица снова приводит к уникальной ошибке ограничения. Это то, что есть? Если так, как я могу избежать этого? Если нет, то почему у меня эта ошибка?