import hashlib import json import os import pymysql key_set = {} db = pymysql.connect(host='39.101.194.63', port=23306, user='root', passwd='passok123A', db='nfm', charset='utf8mb4') cursor = db.cursor() root_node_id = '' def md5(content=None): if content is None: return '' md5gen = hashlib.md5() md5gen.update(content.encode()) md5code = md5gen.hexdigest() return md5code def get_data_item(data): if data is not None and len(data) > 0: for sub_data in data: save_data_to_db(sub_data) if 'ChildNodes' in sub_data: child_data = sub_data['ChildNodes'] get_data_item(child_data) def save_data_to_db(data): global root_node_id col_list = [] val_list = [] for key in data: if key != "ChildNodes": col_list.append(key) val = data[key] if type(val) == str: val = val.replace("'", "’") val = "'%s'" % val elif type(val) == bool: if val == True: val = '1' else: val = '0' elif type(val) == int: val = str(val) elif type(val) == dict: val = json.dumps(val, ensure_ascii=False) val = "'%s'" % val if key == 'id': if val == "'0'" or val == "'-1'": val = "'0000" + md5(data['title'])[:6] + "'" root_node_id = val if val == "'-2'": val = "'ffff" + md5(data['value'])[:6] + "'" data['identifier_parent'] = data['value'].replace("_sub", "") if key == 'identifier_parent' and len(val) == 2: val = root_node_id val_list.append(val) cols = ', '.join(col_list) vals = ', '.join(val_list) sql_insert = 'INSERT INTO m_struct_content (%s) VALUES (%s)' % (cols, vals) # sql_insert = 'INSERT INTO m_struct_tree (%s) VALUES (%s)' % (cols, vals) print(sql_insert) cursor.execute(sql_insert) def get_key_set(array): if array is not None and len(array) > 0: for item in array: for key in item: if key != "ChildNodes": l_key = 0 if type(item[key]) == dict: l_key = len(json.dumps(item[key])) if type(item[key]) == bool: l_key = 1 if type(item[key]) == str: l_key = len(item[key]) if type(item[key]) == int: l_key = len(str(item[key])) if key in key_set: if key_set[key] < l_key: key_set[key] = l_key else: key_set[key] = l_key else: get_key_set(item[key]) json_file_path = r"E:\yuxin\nuofang-data\structure\0420\content" if __name__ == "__main__": for file_name in os.listdir(json_file_path): if file_name != 'content-usa.json': c_file = open(json_file_path + '\\' + file_name, 'r', encoding='utf-8') file_json = json.loads(c_file.read()) c_file.close() # get_key_set(file_json['tree']) root_node_id = '' get_data_item(file_json['tree']) # get_data_item(file_json) db.commit() # print(key_set)