Tôi có hai bảng, nói A và B. Cả hai đều có một id khóa chính. Họ có mối quan hệ nhiều-nhiều, SEC.Sqlalchemy: cập nhật mối quan hệ thứ cấp
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)
...
Hãy xem xét đoạn mã này.
a = A()
b1 = B()
b2 = B()
a.rels = [b1, b2]
...
#some place later
b3 = B()
a.rels = [b1, b3] # errors sometimes
Đôi khi, tôi nhận được một lỗi ở dòng cuối cùng nói
duplicate key value violates unique constraint a_b_pkey
Trong hiểu biết của tôi, tôi nghĩ rằng nó sẽ cố gắng để thêm (a.id, b.id) vào bảng 's' một lần nữa dẫn đến một lỗi ràng buộc duy nhất. Đây co thật sự la bản chât của no? Nếu vậy, làm thế nào tôi có thể tránh điều này? Nếu không, tại sao tôi có lỗi này?
Tôi không thực sự chắc chắn tại sao.Tôi cần phải kiểm tra nó đúng cách và sẽ cho bạn biết. Cảm ơn đã giúp đỡ. – Sri