database_tools_2中增加generateDictsfromMariaDB功能, 用数据库的cursor生成各种字典

This commit is contained in:
weiye.wang 2024-05-01 21:29:10 +08:00
parent 6e097b8525
commit c438ff7002
1 changed files with 134 additions and 0 deletions

View File

@ -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)) usagecode = re.sub("\\t([\d]\.[\d]{0,10})",GenerateValueColorCode,"\n\n".join(usages_str))
return usagecode #返回缩减后的使用记录列表 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来生成讲义 def generateLaTeXBodyContentfromMariaDB(cursor,id,misc): #根据id,读取的json内容adict,和字典misc来生成讲义
#misc 样例 #misc 样例
#{ #{