Работа со следующими моделями
Base = declarative_base()
class NodeGroup(Base):
__tablename__ = "node_groups"
id = Column(BigInteger, primary_key=True, autoincrement=False)
# columns definition
class Node(Base):
id = Column(BigInteger, primary_key=True)
# columns definition
group_id = Column(BigInteger, ForeignKey('node_groups.id', ondelete='SET NULL'), nullable=True)
group = relationship(NodeGroup, backref=backref('nodes'))
Возникает следующая проблема при перемещении узлов одной группы в другую с использованием приведенного ниже кода.
g = session.query(NodeGroup).order_by(NodeGroup.id).first()
g2 = session.query(NodeGroup).order_by(NodeGroup.id.desc()).first()
print('Group 1', g.nodes, 'Group 2', g2.nodes)
g.nodes.extend(g2.nodes)
print('Group 1', g.nodes, 'Group 2', g2.nodes)
(«Группа 1», [], «Группа 2», [Узел 3, Узел 8, Узел 1, Узел 2, Узел 12])
(«Группа 1», [Узел 3, Узел 1, Узел 12], «Группа 2», [Узел 8, Узел 2])
Передаются только 3 из 5 узлов
Тот же сценарий, но с использованием перечисленных ниже передач все узлы
g.nodes.extend(list(g2.nodes))
(«Группа 1», [], «Группа 2», [Узел 3, Узел 8, Узел 1, Узел 2, Узел 12])
(«Группа 1», [Узел 3, Узел 8, Узел 1, Узел 2, Узел 12], «Группа 2», [])
Итак, мой вопрос в чем причина это поведение? Ожидается ли это, или я что-то не так делаю, и есть ли лучший способ добиться этого?
Редактировать: sqlalchemy версия 1.2.6