python - SQLALchemy 邻接表获取所有父项

标签 python sqlalchemy flask-sqlalchemy

这是一个邻接表示例:

class TreeNode(Base):
    __tablename__ = 'tree'
    id = Column(Integer, primary_key=True)
    parent_id = Column(Integer, ForeignKey(id))
    name = Column(String(50), nullable=False)

    children = relationship("TreeNode",
                        cascade="all",
                        backref=backref("parent", remote_side=id)
                    )

假设我有一个简单的线性结构: (0)---->(1)---->(2)---->(3)

如何获取某个节点的所有祖先节点?类似 node2.parents.all() 的东西返回节点 0 和 1 的列表。

我试着这样做:

parents = relationship("TreeNode", cascade="all", primaryjoin="TreeNode.parent_id==TreeNode.id")

运气不好 - 它返回 child 而不是 parent 。

谢谢。

最佳答案

你不能使用简单的关系来做到这一点。 如果您使用 MSSQL 或 Postgresql,请尝试创建一个 ( Hybrid ) 属性,该属性将利用 Query.cte .

关于python - SQLALchemy 邻接表获取所有父项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16668709/

相关文章:

python - 删除 pandas dataFrame 中给定列中具有唯一元素的行。 (独特是指重复一次)

python - 为什么 SQLAlchemy 不更新 Flask WSGI 服务器中的行值?

python - Flask-SQLAlchemy 中的 LocalProxy 对象

python - Sqlalchemy - 执行原始 SQL 查询

python - Geopy 在 ASCII 字符上阻塞

python - PyTorch 张量切片和内存使用情况

python - 如何找出并访问 pandas 警告子类?

python - 保持部分离线的 sqlite 数据库与 postgresql 同步

python - 单个 python 脚本文件中的 sqlalchemy

python - 在 SQLAlchemy 中按子查询排序