使用 sqlalchemy_mptt 做树结构数据的管理

使用 sqlalchemy_mptt 做树结构数据的管理

文件格式的数据要求做数据的存储, 调研发现了 mptt 的这种树结构, 可以使用二叉树的左右节点作为排序的基础, 从而达到数据插入查询的树结构

只是最后发现, 这种方式查询方便, 但是维护树的开销太大, 导致每次数据更新都会耗时很久, 最后文件存储还是使用传统的方式: parent_id

参考文档

sqlalchemy_mptt 官网:
    https://sqlalchemy-mptt.readthedocs.io/crud.html

sqlalchemy_mptt 使用:
    https://blog.csdn.net/yilovexing/article/details/118759950


树结构的存储方案:
    https://www.jianshu.com/p/2ac9eb3b6185
    https://juejin.cn/post/6844903873581170701#heading-6


使用sqlalchemy构建树结构的用户评论
    https://juejin.cn/post/6979897604100325406

一种树方案的使用:
    https://jeesite.com/docs/tree-table-use/#%E6%98%BE%E7%A4%BA%E5%BD%93%E5%89%8D%E8%8A%82%E7%82%B9%E7%9A%84%E5%85%A8%E5%90%8D%E7%A7%B0


部分操作

查询某一节点的树路径

node = (
    db.session.query(Tree)
        .filter( 
            Tree.id == depot_id, 
            Tree.type == "类型"
        )
        .first()
       )

# 重点是 query 与 json_fields(返回指定的json字段)
res = node.get_tree(
    session=db.session, 
    json=True,
    json_fields=lambda tree_node: {"name":tree_node.name, "type":tree_node.type, "parent_id": tree_node.parent_id}, 
    query=lambda nodes: nodes.filter(TRee.tree_id == node.tree_id)
)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值