嵌套集模型与SQLAlchemy - 添加新节点

3 投票
1 回答
4075 浏览
提问于 2025-04-15 13:11

如何使用SQLAlchemy在一个采用嵌套集模型实现的树中添加新节点呢?

class Category(Base):
    __tablename__ = 'categories'

    id = Column(Integer, primary_key=True)
    name = Column(String(128), nullable=False)
    lft = Column(Integer, nullable=False, unique=True)
    rgt = Column(Integer, nullable=False, unique=True)

我需要在表上设置一个触发器,以便为新节点分配lftrgt值,并更新所有其他受影响的节点。但是,定义节点位置的最佳方法是什么呢?我可以把新节点的parent_id传递给构造函数,但我该如何将parent_id传递给触发器呢?

1 个回答

6

你可以看看SQLAlchemy的示例目录里的嵌套集合示例。这个示例是在Python层面上实现的模型。

如果想在数据库层面上用触发器来实现,就需要某种方式来传达想要的父级关系,可以通过增加一个额外的列或者使用存储过程来实现。

撰写回答