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?