From 03f0d2016385948d02432c0d8af7b1f18ba90618 Mon Sep 17 00:00:00 2001 From: "weiye.wang" Date: Wed, 17 Apr 2024 07:00:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9metadata=20=E6=96=BD=E5=B7=A5?= =?UTF-8?q?=E4=B8=AD,=20ObtainDatatoModify=E9=9C=80=E8=A6=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9(=E9=A1=B9=E7=9B=AE=E5=88=87=E5=88=86)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 工具v3/database_tools_2.py | 49 ++++++++++++++++++++++-------------- 工具v3/修改metadata.py | 22 ++++++++++++++++ 工具v3/文本文件/metadata.txt | 39 ++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 19 deletions(-) create mode 100644 工具v3/修改metadata.py create mode 100644 工具v3/文本文件/metadata.txt diff --git a/工具v3/database_tools_2.py b/工具v3/database_tools_2.py index 348251a1..26f3090f 100644 --- a/工具v3/database_tools_2.py +++ b/工具v3/database_tools_2.py @@ -832,31 +832,42 @@ def AppendUsageData2024(prodict,field_id_and_content): return (field,id,content,output) #返回四元组: 题号, 字段, 内容, 待确定是否要添加的字符串(不含FORCE字样的行为旧结果,含FORCE字样的行为新结果,FORCE是运行后强制添加) -def ImportMetadata(prodict,objdict,fieldsdict,metadatafilepath,pendingdatafilepath): #metadata自动修改, 根据字段自适应修改, 参数为题库字典, 目标字典, 字段字典, metadata文本文件路径, 待确定是否替换的内容的存放路径 +def ImportMetadata(db,metadatafilepath): #metadata自动修改, 根据字段自适应修改, 参数为题库字典, 目标字典, 字段字典, metadata文本文件路径, 待确定是否替换的内容的存放路径 + fieldsdict = {"objs":"objappend", + "tags":"tagappend", + "ans":"overwrite", + "solution":"overwrite", + "usages":"usageappend", + "same":"mutualappend", + "related":"mutualappend", + "unrelated":"mutualappend", + "space":"overwrite", + "remark":"remarkappend" + } data_to_modify = ObtainDatatoModify(metadatafilepath,fieldsdict) - outputstring = "usages\n\n" + print(data_to_modify) for item in data_to_modify: field = item[0] if field == "NotAField": - print("字段名有误") + print(f"项目 {item[1]} {item[2]} 字段名有误, 未对数据库作更改, 请检查!!!") + db.rollback() + db.close() return 1 else: - method = fieldsdict[field]["Method"] - if method == "overwrite": - feedback = OverwriteData(prodict,fieldsdict,item) - elif method == "append": - feedback = AppendData(prodict,fieldsdict,item) - elif method == "mutualappend": - feedback = AppendMutualData(prodict,item) - elif method == "objappend": - feedback = AppendObjData(prodict,objdict,item) - elif method == "usageappend": - feedback = AppendUsageData2024(prodict,item) - outputstring += feedback[3] - elif method == "fixed": - print("字段 %s 不可按此方式修改"%field) - SaveTextFile(outputstring,pendingdatafilepath) - return outputstring # 已在数据库中修改, 之后需要将数据库写入一次, 返回1表示字段名有误, 返回其他表示成功进行了修改 + method = fieldsdict[field] + print(method) + + + return 0 # 已在数据库中修改, 之后需要将数据库写入一次, 返回1表示字段名有误, 返回其他表示成功进行了修改 + +def overwriteinDB(mydb,field,id,content_string): + mycursor = mydb.cursor() + sql = f"UPDATE problems SET {field} = %s WHERE ID = %s;" + val = (content_string,id) + mycursor.execute(sql,val) + sql = "INSERT INTO logs (DATE,TIME,username,ID,action,db_content) VALUE (%s,%s,%s,%s,%s,%s);" + val = (GetDate(),GetTime(),get_git_username(),id,f"更改 {field} 数据",content_string) + mycursor.execute(sql,val) def parseUsage(usagestring): #对单行usage信息进行分词 usagedict = {} diff --git a/工具v3/修改metadata.py b/工具v3/修改metadata.py new file mode 100644 index 00000000..523cb1af --- /dev/null +++ b/工具v3/修改metadata.py @@ -0,0 +1,22 @@ +metadatafilepath = "文本文件/metadata.txt" + + + + + + + +from database_tools_2 import * + +# fieldsdict = load_dict("../题库0.3/ProblemFields.json") +# prodict = load_dict("../题库0.3/Problems.json") +# objdict = load_dict("../题库0.3/LessonObj.json") + +mydb = connect(hostname = "wwylss.synology.me", port = "13306", username="tikuuser", pwd="Kjmathds_2024", db = "tikutest") + + +ImportMetadata(mydb,metadatafilepath) + +mydb.close() +# save_dict(prodict,"../题库0.3/Problems.json") + diff --git a/工具v3/文本文件/metadata.txt b/工具v3/文本文件/metadata.txt new file mode 100644 index 00000000..622bc557 --- /dev/null +++ b/工具v3/文本文件/metadata.txt @@ -0,0 +1,39 @@ +objs + +1 +K0201001B + +3 +K0302004X + +tags + +20 +第四单元 +第五单元 + +300 +复数 + +usages + +500 +20240417 2026届高一12班 0.955 + +501 +20240417 2026届高一10班 0.945 + +remark + +2111 +20240417 测试 +20240417 测试2 + +ans + +1 +205 + +2 +20501 +