gpt4 book ai didi

python - 将postgresql数据库表转换为json树python

转载 作者:行者123 更新时间:2023-11-29 13:42:18 32 4
gpt4 key购买 nike

我有一个具有递归关系的数据库表:

enter image description here

我需要将上述数据转换为 JSON 格式,以便它适合 ng2-tree:

{
value: 1,
data: "d1"
children: [
{
value: '2',
data: "d2"
children: [
{value: 3,
data: "d3",
children: [
value: 4,
data: "d4",
children : []
]},
{value: 6, data: "d6", children: []}
]
},
{
value: '5',
data: "d5"
children: [
]
}
]
}

我尝试了各种实现,包括使用上表中的边创建树,然后使用递归制作 json 结构,但我在将数据值添加到生成的 json 中时遇到问题。

我正在使用 python2 编写以下代码,感谢任何帮助。

最佳答案

你可以使用递归:

import sqlite3
data = list(sqlite3.connect('filename.db').cursor().execute("SELECT * FROM tablename"))
#[[1, 'None', 'd1'], [2, 1, 'd2'], [3, 2, 'd3'], [4, 3, 'd4'], [5, 1, 'd5'], [6, 2, 'd6']]
def group_vals(_start):
return [{'value':a, 'data':c, 'children':group_vals(a)} for a, b, c in data if b == _start]

[[val, _data]] = [[a, c] for a, b, c in data if b == 'None']
new_result = {'value':val, 'data':_data, 'children':group_vals(val)}

输出:

{
"value": 1,
"data": "d1",
"children": [
{
"value": 2,
"data": "d2",
"children": [
{
"value": 3,
"data": "d3",
"children": [
{
"value": 4,
"data": "d4",
"children": []
}
]
},
{
"value": 6,
"data": "d6",
"children": []
}
]
},
{
"value": 5,
"data": "d5",
"children": []
}
]
}

关于python - 将postgresql数据库表转换为json树python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53501800/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com