108 lines
3.4 KiB
Python
108 lines
3.4 KiB
Python
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)
|