SQLALchemy从关系中去规范化字段

SQLALchemy从关系中去规范化字段,sqlalchemy,Sqlalchemy,我有一个具有自我关系的模型和一个非规范化字段,该字段具有相关行中的一些值。有没有办法让它们自动同步,而不必通过属性传递关系 例如: class Node(Base): __tablename__ = 'node' id = Column(Integer, primary_key=True) id_parent = Column(Integer, ForeignKey('node.id)) data = Column(String(64)) last_mod

我有一个具有自我关系的模型和一个非规范化字段,该字段具有相关行中的一些值。有没有办法让它们自动同步,而不必通过属性传递关系

例如:

class Node(Base):
    __tablename__ = 'node'
    id = Column(Integer, primary_key=True)
    id_parent = Column(Integer, ForeignKey('node.id))
    data = Column(String(64))
    last_modified = Column(DateTime, onupdate=utcnow)
    parent_last_modified = Column(DateTime, onupdate=utcnow)

    parent = relationship('Node', remote_side=[id])

我想保持parent\u last\u modified与parent.last\u modified同步,只要它发生更改。如果我可以通过parent.last\u modified访问parent\u last\u modified并访问非规范化字段,而不是进行新查询,那就更好了。

以下事件回调解决了问题:

@event.listens_for(Node.parent, 'set')
def node_parent_listener(node, parent, previous, initiator):
    if parent is None:
        node.parent_last_modified = None
    else:
        node.parent_last_modified = parent.last_modified