将组织结构转换为树状json

# -*-coding:utf8-*-
import pymysql
import datetime
import json
import random
import logging

logging.basicConfig(filename="test_convert_org_to_tree.log",filemode="a",
                    format="%(asctime)s-%(funcName)s-%(lineno)d-%(levelname)s:%(message)s",level=logging.INFO)
console = logging.StreamHandler()
logging.getLogger().addHandler(console)

def execute_sql(sqlstr):
	db = pymysql.connect("10.136.142.111","liumin1","liumin1","liumin1",port=3306 )
	cursor = db.cursor()
	try:
		cursor.execute(sqlstr)
		if(sqlstr.lower().startswith("select")):
			data = cursor.fetchall()
		db.commit()
	except Exception as e:
		logging.info(e)
		logging.info("执行失败的SQL是:%s" % sqlstr)
		db.rollback()
	db.close()
	try:
		return data
	except Exception as e:
		return None

# def convert_table_to_org(data_list):
# 	org = {}
# 	org["id"] = data_list[0]
# 	org["name"] = data_list[1]
# 	org["parentid"] = data_list[2]
# 	return org

def consalt_table_to_python(sqlstr):
	logging.info("要执行的SQL是:%s" % sqlstr)
	data = execute_sql(sqlstr)
	# if(not data):
	# 	return
	org_list = []
	logging.info("data是:%s" % json.dumps(data))
	for i in data:
		org = {}
		org["id"] = i[0]
		org["name"] = i[1]
		org["parentid"] = i[2]
		org_list.append(org)

	return org_list 

def get_sub_children(org_tree):
	sqlstr = "select id,name,parentid from liuyue_test_org where parentid=%d;" %org_tree["id"]
	org_tree_tmp = consalt_table_to_python(sqlstr)
	logging.info("org_tree_tmp是:%s" % org_tree_tmp)
	# if(org_tree_tmp):
	for i in org_tree_tmp:
		logging.info("i是:%s" % i)
		get_sub_children(i)
	org_tree["childrenlist"]=org_tree_tmp

def convert_org_to_tree():
	sqlstr = "select id,name,parentid from liuyue_test_org where parentid=0;"
	org_tree = consalt_table_to_python(sqlstr)[0]
	get_sub_children(org_tree)
	return (json.dumps(org_tree))

print(convert_org_to_tree())

  

原文地址:https://www.cnblogs.com/yahutiaotiao/p/12708348.html

时间: 04-15

将组织结构转换为树状json的相关文章

HDU 6318 Swaps and Inversions 思路很巧妙!!!(转换为树状数组或者归并求解逆序数)

Swaps and Inversions Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2315    Accepted Submission(s): 882 Problem Description Long long ago, there was an integer sequence a.Tonyfang think this se

关于有层级关系时返回前端树状json

结果 { "message": [ { "children": [ { "children": [ { "children": [ { "empno": "7876", "ename": "ADAMS", "mgr": "7788", "sal": "1100" } ]

json格式转树状结构

转自:http://rockyuse.iteye.com/blog/1541308 /** * json格式转树状结构 * @param {json} json数据 * @param {String} id的字符串 * @param {String} 父id的字符串 * @param {String} children的字符串 * @return {Array} 数组 */ function transData(a, idStr, pidStr, chindrenStr){ var r = []

json 平面转树状 child [zhuan]

<script> /** * json格式转树状结构 * @param {json} json数据 * @param {String} id的字符串 * @param {String} 父id的字符串 * @param {String} children的字符串 * @return {Array} 数组 */ function transData(a, idStr, pidStr, chindrenStr) { var r = [], hash = {}, id = idStr, pid =

51 Nod 1107 斜率小于0的连线数量 (转换为归并求逆序数或者直接树状数组,超级详细题解!!!)

1107 斜率小于0的连线数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4,6),其中(1,5)同(2,3)(3,4)的连线斜率 < 0,因此斜率小于0的连线数量为2. Input 第1行:1个数N,N为点的数量(0 <= N <= 50000) 第2

jquery-treegrid树状表格的使用(.Net平台)

上一篇介绍了DataTable,这一篇在DT的基础之上再使用jquery的一款插件:treegrid,官网地址:http://maxazan.github.io/jquery-treegrid/ 一.使用treegrid,需要以下支持 jquery.min.js+jquery.treegrid.min.js 二.后端提供树状列表格式的集合数据,借助前端的DT的配置控制,来在页面上输出满足treegrid格式要求的html 前台: 1 @using Model 2 @{ 3 Layout = nu

POJ 1195 Mobile phones(二维树状数组)

题目链接:POJ 1195 题意: 给出一个S*S的矩阵(行.列号从1开始),每个元素初始值为0,有两种操作:一种是第X行第Y列元素值加A:另一种是查询给定范围矩阵的所有元素之和(L<=X<=R,B<=Y<=T). 分析: 查询给定范围矩阵的所有元素之和是二维区间和,可以转换为二维前缀和求值.类比一维前缀和求法,二维区间和S(L, B, R, T) = S(1, 1, R, T) - S(1 ,1, L-1, T) - S(1, 1, R, B-1) + S(1, 1, L-1,

【BZOJ-3790】神奇项链 Manacher + 树状数组(奇葩) + DP

3790: 神奇项链 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 304  Solved: 150[Submit][Status][Discuss] Description 母亲节就要到了,小 H 准备送给她一个特殊的项链.这个项链可以看作一个用小写字母组成的字符串,每个小写字母表示一种颜色.为了制作这个项链,小 H 购买了两个机器.第一个机器可以生成所有形式的回文串,第二个机器可以把两个回文串连接起来,而且第二个机器还有一个特殊的性质:假如一个

一维 + 二维树状数组 + 单点更新 + 区间更新 详解

树状数组详解: 假设一维数组为A[i](i=1,2,...n),则与它对应的树状数组C[i](i=1,2,...n)是这样定义的: C1 = A1 C2 = A1 + A2 C3 = A3 C4 = A1 + A2 + A3 + A4 C5 = A5 C6 = A5 + A6 ................. C8 = A1 + A2 + A3 + A4 + A5 + A6 + A7 + A8 ................ 如图可知: 为奇数的时候他是代表他本身,而为偶数的时候则是代表着自

BIT 树状数组 详解 及 例题

(一)树状数组的概念 如果给定一个数组,要你求里面所有数的和,一般都会想到累加.但是当那个数组很大的时候,累加就显得太耗时了,时间复杂度为O(n),并且采用累加的方法还有一个局限,那就是,当修改掉数组中的元素后,仍然要你求数组中某段元素的和,就显得麻烦了.所以我们就要用到树状数组,他的时间复杂度为O(lgn),相比之下就快得多.下面就讲一下什么是树状数组: 一般讲到树状数组都会少不了下面这个图: 下面来分析一下上面那个图看能得出什么规律: 据图可知:c1=a1,c2=a1+a2,c3=a3,c4