SQLAlchemy обновить / удалить таблицу связей с дополнительными столбцами - PullRequest
0 голосов
/ 11 марта 2019

Я очень новичок в SQLAlchemcy.Может ли кто-нибудь помочь мне понять, как обновить дополнительные данные или удалить всю строку в таблице сопоставлений.

Приведенный ниже код непосредственно взят из документации по SQLAlchemy.

class Association(Base):
     __tablename__ = 'association'
     left_id = Column(Integer, ForeignKey('left.id'), primary_key=True)
     right_id = Column(Integer, ForeignKey('right.id'), primary_key=True)
     extra_data = Column(String(50))
     child = relationship("Child", back_populates="parents")
     parent = relationship("Parent", back_populates="children")

class Parent(Base):
     __tablename__ = 'left'
     id = Column(Integer, primary_key=True)
     children = relationship("Association", back_populates="parent")

class Child(Base):
     __tablename__ = 'right'
     id = Column(Integer, primary_key=True)
     parents = relationship("Association", back_populates="child")


# create parent, append a child via association
p = Parent()
a = Association(extra_data="some data")
a.child = Child()
p.children.append(a)

# iterate through child objects via association, including association
# attributes

    for assoc in p.children:
        print(assoc.extra_data)
        print(assoc.child)

Теперь,Я знаю, как добавить данные в таблицу сопоставлений с помощью приведенного выше кода, но, возможно, некоторые из них помогут мне понять, как удалить / обновить строку.Я попробовал следующий код, но получаю сообщение об ошибке.

p.children.remove(a)
#error is
Dependency rule tried to blank-out primary key column 'association.left_id'

Заранее спасибо.

...