修改metadata 施工中, ObtainDatatoModify需要修改(项目切分)

This commit is contained in:
weiye.wang 2024-04-17 07:00:22 +08:00
parent 45a342cfe2
commit 03f0d20163
3 changed files with 91 additions and 19 deletions

View File

@ -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 = {}

View File

@ -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")

View File

@ -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