python 或 R 代码调用 mySQL 进行分层和递归查询

python or R code call to mySQL for hierarchical and recursive queries

我需要根据 parentID 和 childID 的 table 创建一个父子树,其中树可能有多个级别,所以我需要自己加入 table 多个级别就像树一样,虽然我不知道有多少层。此处讨论了 SQL 而非 mySQL 的可行解决方案:Simplest way to do a recursive self-join in SQL Server?,但 mySQL 不支持分层联接。

有没有一种方法可以编写 Python 或 R 脚本环绕 mySQL 代码来执行此操作?

一个后续问题是我想可视化树并使其具有交互性(查看者可以添加/删除条目),并且树可能会很大所以可能具有缩放功能/只能看到一部分一次处理一棵树 - 最好的方法是什么?我正在考虑在 R 中使用 shiny 包。

谢谢!

假设 table 与您提到的 link 相同。假设此数据位于数据框 df 中,并且您想为 PersonID 1 (CJ)

构建层次结构
PersonID | Initials | ParentID
1          CJ         NULL
2          EB         1
3          MB         1
4          SW         2
5          YT         NULL
6          IS         5

你可以写一个像下面这样的函数,它会一直循环查找,除非树停止生长。我还没有测试过这个,所以可能有一些错误,但它给出了一个大概的想法。

buildTree <- function(df,id) {
tree <- df[df$PersonID == id,]
len <- nrow(tree)
while(1){
tree <- df[df$ParentID %in% tree$PersonID,]
if(nrow(tree) == len) break;
len <- nrow(tree)
}
}

tree <- buildTree(df,1)