将组织结构转换为层级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