SQLAlchemy支持“闭包表”吗?
我最近在了解闭包表,这是一种在SQL中建模层级结构的方法。
[SQLAlchemy]有没有内置的功能,可以用闭包表来创建和遍历对象实例的层级集合(树状结构的集合)呢?
1 个回答
7
我最近在我的博客上写过这个话题。
大体上来说,sqlalchemy并没有做什么SQL做不到的事情;它主要是提供了一些方法来生成SQL语句,并把结果转换成好用的Python对象。
如果你的数据库有一些处理递归关系的有用工具,比如CONNECT BY
或者WITH RECURSIVE
这样的功能,那么sqlalchemy可以很容易地调整,让这些查询结果变成可以选择和映射的Python对象。
在我提到的那篇文章中,我需要在MySQL上实现一个读写的部分顺序,但MySQL在SQL层面上并没有提供对递归数据结构的支持。我想出的解决方案创建了一个类似于sqlalchemy风格的属性,这个属性在后台保持了传递闭包的不变性。