Sqlalchemy: Aktualisierung der sekundären Beziehung

Ich habe zwei Tabellen, sagen A und B. Beide haben eine Primärschlüssel-ID. Sie haben eine Viele-zu-Viele-Beziehung, 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) 
   ...

Betrachten wir diesen Code.

a = A()
b1 = B()
b2 = B()
a.rels = [b1, b2]
...
#some place later
b3 = B()
a.rels = [b1, b3]  # errors sometimes

Manchmal erhalte ich in der letzten Zeile eine Fehlermeldung

duplicate key value violates unique constraint a_b_pkey

Nach meinem Verständnis wird versucht, (a.id, b.id) erneut in die 'sec'-Tabelle einzufügen, was zu einem eindeutigen Einschränkungsfehler führt. Ist es das? Wenn ja, wie kann ich das vermeiden? Wenn nicht, warum habe ich diesen Fehler?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage