diff --git a/工具v4/database_tools_2.py b/工具v4/database_tools_2.py index 82e5a81e..1606732a 100644 --- a/工具v4/database_tools_2.py +++ b/工具v4/database_tools_2.py @@ -1569,6 +1569,140 @@ def GenerateUsageTexCode(usage_list_raw,misc): #根据topandbottomusagestuple的 usagecode = re.sub("\\t([\d]\.[\d]{0,10})",GenerateValueColorCode,"\n\n".join(usages_str)) return usagecode #返回缩减后的使用记录列表 + +def generateDictsfromMariaDB(mycursor): + pro_dict = {} + obj_dict = {} + bn_dict = {} + unit_obj_dict = {} + sql = "SELECT * FROM problems;" #生成problems的原始架构 + mycursor.execute(sql) + ret_list = mycursor.fetchall() + # print(len(ret_list)) + for ret in tqdm.tqdm(ret_list,desc="生成题目字典"): + pro_dict[ret[0]] = {"id": ret[0], "content": ret[1], "ans": ret[2], "solution": ret[3], "genre": ret[4], "duration": ret[5], "origin": json.loads(ret[6]), "space": ret[7]} + + sql = "SELECT * FROM objcorresp;" #生成objs + mycursor.execute(sql) + ret_list = mycursor.fetchall() + for id in pro_dict: + pro_dict[id]["objs"] = [] + # print("生成目标对应中...") + for ret in tqdm.tqdm(ret_list,desc="生成目标对应"): + pro_dict[ret[0]]["objs"].append(ret[1]) + + sql = "SELECT * FROM tagcorresp;" #生成tags + mycursor.execute(sql) + ret_list = mycursor.fetchall() + for id in pro_dict: + pro_dict[id]["tags"] = [] + # print("生成标签对应中...") + for ret in tqdm.tqdm(ret_list,desc = "生成标签对应"): + pro_dict[ret[0]]["tags"].append(ret[1]) + + sql = "SELECT * FROM usages;" #生成usages + mycursor.execute(sql) + ret_list = mycursor.fetchall() + for id in pro_dict: + pro_dict[id]["usages"] = [] + # print("生成使用记录中...") + for ret in tqdm.tqdm(ret_list,desc="生成使用记录"): + u = "\t".join(json.loads(ret[3])) + if ret[1] is None: + pro_dict[ret[0]]["usages"].append(f"{ret[2]}\t{u}") + else: + pro_dict[ret[0]]["usages"].append(f"{ret[1]}\t{ret[2]}\t{u}") + + sql = "SELECT * FROM edit_history;" #生成edit + mycursor.execute(sql) + ret_list = mycursor.fetchall() + for id in pro_dict: + pro_dict[id]["edit"] = [] + # print("生成编辑历史中...") + for ret in tqdm.tqdm(ret_list,desc="生成编辑历史"): + pro_dict[ret[0]]["edit"].append(f"{ret[1]}\t{ret[2]}") + + sql = "SELECT * FROM same;" #生成same + mycursor.execute(sql) + ret_list = mycursor.fetchall() + for id in pro_dict: + pro_dict[id]["same"] = [] + # print("生成same联系中...") + for ret in tqdm.tqdm(ret_list,desc="关联相同题目"): + pro_dict[ret[0]]["same"].append(ret[1]) + pro_dict[ret[1]]["same"].append(ret[0]) + + sql = "SELECT * FROM related;" #生成related + mycursor.execute(sql) + ret_list = mycursor.fetchall() + for id in pro_dict: + pro_dict[id]["related"] = [] + # print("生成related联系中...") + for ret in tqdm.tqdm(ret_list,desc="关联相关题目"): + pro_dict[ret[0]]["related"].append(ret[1]) + pro_dict[ret[1]]["related"].append(ret[0]) + + sql = "SELECT * FROM unrelated;" #生成unrelated + mycursor.execute(sql) + ret_list = mycursor.fetchall() + for id in pro_dict: + pro_dict[id]["unrelated"] = [] + # print("生成unrelated联系中...") + for ret in tqdm.tqdm(ret_list,desc="关联无关题目"): + pro_dict[ret[0]]["unrelated"].append(ret[1]) + pro_dict[ret[1]]["unrelated"].append(ret[0]) + + sql = "SELECT * FROM remarks;" #生成remark + mycursor.execute(sql) + ret_list = mycursor.fetchall() + for id in pro_dict: + pro_dict[id]["remark"] = [] + # print("生成备注中...") + for ret in tqdm.tqdm(ret_list,desc="生成备注"): + pro_dict[ret[0]]["remark"].append(f"{ret[1]}\t{ret[2]}") + + sql = "SELECT * FROM lessonobj;" #生成obj_dict + mycursor.execute(sql) + ret_list = mycursor.fetchall() + # print("生成课时目标dict中...") + for ret in tqdm.tqdm(ret_list,desc = "生成课时目标"): + obj_dict[ret[0]] = {"objid":ret[0],"objcontent":ret[1],"unitobjid":ret[2]} + + sql = "SELECT * FROM objinherit;" #生成predecessor + mycursor.execute(sql) + ret_list = mycursor.fetchall() + for objid in obj_dict: + obj_dict[objid]["predecessor"] = [] + # print("生成课时目标前序中...") + for ret in tqdm.tqdm(ret_list,desc = "构建课时目标顺序"): + obj_dict[ret[0]]["predecessor"].append(ret[1]) + + sql = "SELECT * FROM unitobj;" #生成unit_obj_dict + mycursor.execute(sql) + ret_list = mycursor.fetchall() + # print("生成单元目标dict中...") + for ret in tqdm.tqdm(ret_list,desc = "生成单元目标"): + unit_obj_dict[ret[0]] = {"unitobjid":ret[0],"unitobjcontent":ret[1]} + + + sql = "SELECT * FROM basic_knowledges;" #生成bn_dict + mycursor.execute(sql) + ret_list = mycursor.fetchall() + # print("生成基础知识dict中...") + for ret in tqdm.tqdm(ret_list,desc = "生成基础知识"): + bn_dict[ret[0]] = {"bnid":ret[0],"bncontent":ret[1]} + + sql = "SELECT * FROM bn_obj_corresp;" #生成bn与obj的对应 + mycursor.execute(sql) + ret_list = mycursor.fetchall() + for bnid in bn_dict: + bn_dict[bnid]["objs"] = [] + # print("生成基础知识与课时目标对应中...") + for ret in tqdm.tqdm(ret_list,desc = "对应基础知识与课时目标"): + bn_dict[ret[0]]["objs"].append(ret[1]) + return pro_dict,obj_dict,bn_dict,unit_obj_dict + + def generateLaTeXBodyContentfromMariaDB(cursor,id,misc): #根据id,读取的json内容adict,和字典misc来生成讲义 #misc 样例 #{