修改题库工具为适配含有obsolete列的数据库
This commit is contained in:
parent
58d304166c
commit
40306c2864
|
|
@ -117,11 +117,11 @@ def findsru(id,alist): #在same_list中寻找与id相同的题号
|
|||
def findsameinDB(id,database): #在数据库中寻找与id相同的题号
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
|
||||
mycursor = mydb.cursor()
|
||||
sql = "SELECT SAME_ID FROM same WHERE ID = (%s);"
|
||||
sql = "SELECT SAME_ID FROM same WHERE ID = (%s) AND NOT obsolete;"
|
||||
val = (id,)
|
||||
mycursor.execute(sql,val)
|
||||
set1 = set([ret[0] for ret in mycursor.fetchall()])
|
||||
sql = "SELECT ID FROM same WHERE SAME_ID = (%s);"
|
||||
sql = "SELECT ID FROM same WHERE SAME_ID = (%s) AND NOT obsolete;"
|
||||
mycursor.execute(sql,val)
|
||||
set2 = set([ret[0] for ret in mycursor.fetchall()])
|
||||
return sorted(list(set1 | set2))
|
||||
|
|
@ -129,11 +129,11 @@ def findsameinDB(id,database): #在数据库中寻找与id相同的题号
|
|||
def findrelatedinDB(id,database): #在数据库中寻找与id关联的题号
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
|
||||
mycursor = mydb.cursor()
|
||||
sql = "SELECT RELATED_ID FROM related WHERE ID = (%s);"
|
||||
sql = "SELECT RELATED_ID FROM related WHERE ID = (%s) AND NOT obsolete;"
|
||||
val = (id,)
|
||||
mycursor.execute(sql,val)
|
||||
set1 = set([ret[0] for ret in mycursor.fetchall()])
|
||||
sql = "SELECT ID FROM related WHERE RELATED_ID = (%s);"
|
||||
sql = "SELECT ID FROM related WHERE RELATED_ID = (%s) AND NOT obsolete;"
|
||||
mycursor.execute(sql,val)
|
||||
set2 = set([ret[0] for ret in mycursor.fetchall()])
|
||||
return sorted(list(set1 | set2))
|
||||
|
|
@ -141,7 +141,7 @@ def findrelatedinDB(id,database): #在数据库中寻找与id关联的题号
|
|||
def get_unit_tags(id,database):
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
|
||||
mycursor = mydb.cursor()
|
||||
sql = "SELECT tagname FROM tagcorresp WHERE ID = (%s);"
|
||||
sql = "SELECT tagname FROM tagcorresp WHERE ID = (%s) AND NOT obsolete;"
|
||||
val = (id,)
|
||||
mycursor.execute(sql,val)
|
||||
unittags = [ret[0] for ret in mycursor.fetchall() if "单元" in ret[0]]
|
||||
|
|
@ -151,10 +151,14 @@ def get_unit_tags(id,database):
|
|||
def get_problem_content(id,database):
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
|
||||
mycursor = mydb.cursor()
|
||||
sql = "SELECT content FROM problems WHERE ID = (%s);"
|
||||
sql = "SELECT content FROM problems WHERE ID = (%s) AND NOT obsolete;"
|
||||
val = (id,)
|
||||
mycursor.execute(sql,val)
|
||||
content = mycursor.fetchall()[0][0]
|
||||
ret = mycursor.fetchall()
|
||||
if len(ret) == 0:
|
||||
return "题目已作废"
|
||||
else:
|
||||
content = ret[0][0]
|
||||
mydb.close()
|
||||
return content
|
||||
|
||||
|
|
@ -162,7 +166,7 @@ def get_problem_content(id,database):
|
|||
def generate_same_list(database):
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
|
||||
mycursor = mydb.cursor()
|
||||
mycursor.execute("SELECT ID,SAME_ID FROM same;")
|
||||
mycursor.execute("SELECT ID,SAME_ID FROM same WHERE NOT obsolete;")
|
||||
same_list = [(ret[0],ret[1]) for ret in mycursor.fetchall()]
|
||||
mydb.close()
|
||||
return same_list.copy()
|
||||
|
|
@ -170,7 +174,7 @@ def generate_same_list(database):
|
|||
def generate_related_list(database):
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
|
||||
mycursor = mydb.cursor()
|
||||
mycursor.execute("SELECT ID,RELATED_ID FROM related;")
|
||||
mycursor.execute("SELECT ID,RELATED_ID FROM related WHERE NOT obsolete;")
|
||||
related_list = [(ret[0],ret[1]) for ret in mycursor.fetchall()]
|
||||
mydb.close()
|
||||
return related_list.copy()
|
||||
|
|
@ -179,7 +183,7 @@ def treat_dict(database): #对整个题库字典中的内容部分进行预处
|
|||
treated_dict = {}
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
|
||||
mycursor = mydb.cursor()
|
||||
mycursor.execute("SELECT ID,content FROM problems;")
|
||||
mycursor.execute("SELECT ID,content FROM problems WHERE NOT obsolete;")
|
||||
p_dict = {id:content for id,content in mycursor.fetchall()}
|
||||
# mycursor.execute("SELECT ID,SAME_ID FROM same;")
|
||||
# same_list = [(ret[0],ret[1]) for ret in mycursor.fetchall()]
|
||||
|
|
@ -363,6 +367,9 @@ def usedIDs(database_name): #返回已使用题号, 已更新为适合mariadb的
|
|||
start = interval[0]
|
||||
end = interval[-1]
|
||||
output += "首个已使用id: %s, 直至: %s"%(str(start).zfill(6),str(end).zfill(6)) + "\n"
|
||||
mycursor.execute("SELECT ID FROM problems WHERE obsolete;")
|
||||
idlist = [ret[0] for ret in mycursor.fetchall()]
|
||||
output += f"\n已作废题号: {generate_exp(idlist)}"
|
||||
output = output.strip()
|
||||
mydb.close()
|
||||
return output #返回的是一个多行的字符串, 每一行中含有一个已使用题号的闭区间
|
||||
|
|
@ -686,7 +693,7 @@ def CreateRelatedProblems(links,database): # 根据links关联生成待编辑的
|
|||
output = "\\begin{enumerate}\n"
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
|
||||
mycursor = mydb.cursor()
|
||||
sql = "SELECT content FROM problems WHERE ID = %s;"
|
||||
sql = "SELECT content FROM problems WHERE ID = %s AND NOT obsolete;"
|
||||
for id,rid in links:
|
||||
val = (id,)
|
||||
mycursor.execute(sql,val)
|
||||
|
|
@ -926,7 +933,7 @@ def AppendUsageData2024(prodict,field_id_and_content):
|
|||
|
||||
def generateUsageList(db,id):
|
||||
mycursor = db.cursor()
|
||||
mycursor.execute("SELECT date,classname,diff FROM usages WHERE ID = %s;",(id,))
|
||||
mycursor.execute("SELECT date,classname,diff FROM usages WHERE ID = %s AND NOT obsolete;",(id,))
|
||||
tuplelist = mycursor.fetchall()
|
||||
return tuplelist
|
||||
|
||||
|
|
@ -951,9 +958,9 @@ def ImportMetadata(db,metadatafilepath): #metadata自动修改, 根据字段自
|
|||
startdate = GetDate()
|
||||
starttime = GetTime()
|
||||
pendingusagelist = []
|
||||
mycursor.execute("SELECT ID FROM problems;")
|
||||
mycursor.execute("SELECT ID FROM problems WHERE NOT obsolete;")
|
||||
id_list_in_DB = [ret[0] for ret in mycursor.fetchall()]
|
||||
mycursor.execute("SELECT objid FROM lessonobj;")
|
||||
mycursor.execute("SELECT objid FROM lessonobj WHERE NOT obsolete;")
|
||||
obj_list_in_DB = [ret[0] for ret in mycursor.fetchall()]
|
||||
data_to_modify = ObtainDatatoModify(metadatafilepath,fieldsdict,id_list_in_DB)
|
||||
print(data_to_modify)
|
||||
|
|
@ -997,7 +1004,7 @@ def ImportMetadata(db,metadatafilepath): #metadata自动修改, 根据字段自
|
|||
|
||||
def overwriteinDB(mydb,field,id,content_string): #覆盖ans,solution,space字段的内容并在logs中记录
|
||||
mycursor = mydb.cursor()
|
||||
sql = f"SELECT {field} FROM problems WHERE ID = %s;"
|
||||
sql = f"SELECT {field} FROM problems WHERE ID = %s AND NOT obsolete;"
|
||||
val = (id,)
|
||||
mycursor.execute(sql,val)
|
||||
original_string = mycursor.fetchall()[0][0]
|
||||
|
|
@ -1015,7 +1022,7 @@ def mutualappendinDB(mydb,field,id,content_string,idlist): #新增same,related,u
|
|||
smallid = min(id,id2)
|
||||
bigid = max(id,id2)
|
||||
if smallid in idlist and bigid in idlist:
|
||||
sql = f"SELECT ID, {field.upper()}_ID from {field} WHERE ID = %s AND {field.upper()}_ID = %s;"
|
||||
sql = f"SELECT ID, {field.upper()}_ID from {field} WHERE ID = %s AND {field.upper()}_ID = %s AND NOT obsolete;"
|
||||
val = (smallid,bigid)
|
||||
mycursor.execute(sql,val)
|
||||
ret_list = mycursor.fetchall()
|
||||
|
|
@ -1036,7 +1043,7 @@ def objappendinDB(mydb,id,content_string,objlist): #新增obj对应
|
|||
if not objid in objlist:
|
||||
print(f"{objid} 有误, 请检查!!!")
|
||||
else:
|
||||
sql = f"SELECT ID, obj_ID FROM objcorresp WHERE ID = %s AND obj_ID = %s;"
|
||||
sql = f"SELECT ID, obj_ID FROM objcorresp WHERE ID = %s AND obj_ID = %s AND NOT obsolete;"
|
||||
val = (id,objid)
|
||||
mycursor.execute(sql,val)
|
||||
ret_list = mycursor.fetchall()
|
||||
|
|
@ -1053,7 +1060,7 @@ def tagappendinDB(mydb,id,content_string): #新增tag对应
|
|||
mycursor = mydb.cursor()
|
||||
content_list = [item.strip() for item in content_string.split("\n") if not item.strip() == ""]
|
||||
for tag in content_list:
|
||||
sql = f"SELECT ID, tagname FROM tagcorresp WHERE ID = %s AND tagname = %s;"
|
||||
sql = f"SELECT ID, tagname FROM tagcorresp WHERE ID = %s AND tagname = %s AND NOT obsolete;"
|
||||
val = (id,tag)
|
||||
mycursor.execute(sql,val)
|
||||
ret_list = mycursor.fetchall()
|
||||
|
|
@ -1069,7 +1076,7 @@ def remarkappendinDB(mydb,id,content_string): #新增备注
|
|||
content_list = [item.strip() for item in content_string.split("\n") if not item.strip() == ""]
|
||||
for line in content_list:
|
||||
date,remark = parseRemark(line)
|
||||
sql = f"SELECT ID,date,remark_content FROM remarks WHERE ID = %s AND date = %s AND remark_content LIKE %s;"
|
||||
sql = f"SELECT ID,date,remark_content FROM remarks WHERE ID = %s AND date = %s AND remark_content LIKE %s AND NOT obsolete;"
|
||||
val = (id,date,"%"+remark+"%")
|
||||
mycursor.execute(sql,val)
|
||||
ret_list = mycursor.fetchall()
|
||||
|
|
@ -1114,7 +1121,7 @@ def usageappendinDB(mydb,id,content_string): #新增使用记录
|
|||
date = rec["date"]
|
||||
classname = rec["classid"]
|
||||
diff = rec["difficulties"]
|
||||
sql = f"SELECT ID,date,classname,diff FROM usages WHERE ID = %s and classname = %s;"
|
||||
sql = f"SELECT ID,date,classname,diff FROM usages WHERE ID = %s and classname = %s AND NOT obsolete;"
|
||||
val = (id,classname)
|
||||
mycursor.execute(sql,val)
|
||||
oldusage_list = mycursor.fetchall()
|
||||
|
|
@ -1277,7 +1284,7 @@ def GetSamePairs(prodict): #获取已标注的相同题目组
|
|||
|
||||
def ShareSameUsagesinDB(id1,id2,db): #有问题, 待修改
|
||||
mycursor = db.cursor()
|
||||
sql = "SELECT date,classname,diff FROM usages WHERE ID = (%s);"
|
||||
sql = "SELECT date,classname,diff FROM usages WHERE ID = (%s) AND NOT obsolete;"
|
||||
val = (id1,)
|
||||
mycursor.execute(sql,val)
|
||||
id1_usages_list = mycursor.fetchall()
|
||||
|
|
@ -1365,27 +1372,27 @@ def MatchConditioninMariaDB(condition_list,database):
|
|||
}
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
|
||||
mycursor = mydb.cursor()
|
||||
mycursor.execute("SELECT ID FROM problems WHERE NOT content REGEXP 'OBS';")
|
||||
mycursor.execute("SELECT ID FROM problems WHERE NOT obsolete;")
|
||||
match = set([u[0] for u in mycursor.fetchall()])
|
||||
for field,reverse,regexp in condition_list:
|
||||
if not field in ["same","related","usages"]:
|
||||
table,column = corr_dict[field]
|
||||
sql = f"SELECT ID FROM {table} WHERE {column} REGEXP '{regexp}';"
|
||||
sql = f"SELECT ID FROM {table} WHERE {column} REGEXP '{regexp}' AND NOT obsolete;"
|
||||
mycursor.execute(sql)
|
||||
newmatch = set([u[0] for u in mycursor.fetchall()])
|
||||
elif field in ["same","related"]:
|
||||
table,col0,col1 = corr_dict[field]
|
||||
sql1 = f"SELECT {col1} FROM {table} WHERE {col0} REGEXP '{regexp}';"
|
||||
sql1 = f"SELECT {col1} FROM {table} WHERE {col0} REGEXP '{regexp}' AND NOT obsolete;"
|
||||
mycursor.execute(sql1)
|
||||
newmatch = set([u[0] for u in mycursor.fetchall()])
|
||||
sql2 = f"SELECT {col0} FROM {table} WHERE {col1} REGEXP '{regexp}';"
|
||||
sql2 = f"SELECT {col0} FROM {table} WHERE {col1} REGEXP '{regexp}' AND NOT obsolete;"
|
||||
mycursor.execute(sql2)
|
||||
newmatch = newmatch | set([u[0] for u in mycursor.fetchall()])
|
||||
elif field == "usages":
|
||||
table,cols = corr_dict[field][0],corr_dict[field][1:]
|
||||
newmatch = set([])
|
||||
for i in range(len(cols)):
|
||||
sql = f"SELECT ID FROM {table} WHERE {cols[i]} REGEXP '{regexp}';"
|
||||
sql = f"SELECT ID FROM {table} WHERE {cols[i]} REGEXP '{regexp}' AND NOT obsolete;"
|
||||
mycursor.execute(sql)
|
||||
newmatch = newmatch | set([u[0] for u in mycursor.fetchall()])
|
||||
if reverse:
|
||||
|
|
@ -1643,31 +1650,34 @@ def generateDictsfromMariaDB(mycursor):
|
|||
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
|
||||
sql = "SELECT * FROM objcorresp WHERE NOT obsolete;" #生成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="生成目标对应"):
|
||||
if ret[0] in pro_dict:
|
||||
pro_dict[ret[0]]["objs"].append(ret[1])
|
||||
|
||||
sql = "SELECT * FROM tagcorresp;" #生成tags
|
||||
sql = "SELECT * FROM tagcorresp WHERE NOT obsolete;" #生成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 = "生成标签对应"):
|
||||
if ret[0] in pro_dict:
|
||||
pro_dict[ret[0]]["tags"].append(ret[1])
|
||||
|
||||
sql = "SELECT * FROM usages;" #生成usages
|
||||
sql = "SELECT * FROM usages WHERE NOT obsolete;" #生成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="生成使用记录"):
|
||||
if ret[0] in pro_dict:
|
||||
u = "\t".join(json.loads(ret[3]))
|
||||
if ret[1] is None:
|
||||
pro_dict[ret[0]]["usages"].append(f"{ret[2]}\t{u}")
|
||||
|
|
@ -1681,48 +1691,53 @@ def generateDictsfromMariaDB(mycursor):
|
|||
pro_dict[id]["edit"] = []
|
||||
# print("生成编辑历史中...")
|
||||
for ret in tqdm.tqdm(ret_list,desc="生成编辑历史"):
|
||||
if ret[0] in pro_dict:
|
||||
pro_dict[ret[0]]["edit"].append(f"{ret[1]}\t{ret[2]}")
|
||||
|
||||
sql = "SELECT * FROM same;" #生成same
|
||||
sql = "SELECT * FROM same WHERE NOT obsolete;" #生成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="关联相同题目"):
|
||||
if ret[0] in pro_dict and ret[1] in pro_dict:
|
||||
pro_dict[ret[0]]["same"].append(ret[1])
|
||||
pro_dict[ret[1]]["same"].append(ret[0])
|
||||
|
||||
sql = "SELECT * FROM related;" #生成related
|
||||
sql = "SELECT * FROM related WHERE NOT obsolete;" #生成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="关联相关题目"):
|
||||
if ret[0] in pro_dict and ret[1] in pro_dict:
|
||||
pro_dict[ret[0]]["related"].append(ret[1])
|
||||
pro_dict[ret[1]]["related"].append(ret[0])
|
||||
|
||||
sql = "SELECT * FROM unrelated;" #生成unrelated
|
||||
sql = "SELECT * FROM unrelated WHERE NOT obsolete;" #生成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="关联无关题目"):
|
||||
if ret[0] in pro_dict and ret[1] in pro_dict:
|
||||
pro_dict[ret[0]]["unrelated"].append(ret[1])
|
||||
pro_dict[ret[1]]["unrelated"].append(ret[0])
|
||||
|
||||
sql = "SELECT * FROM remarks;" #生成remark
|
||||
sql = "SELECT * FROM remarks WHERE NOT obsolete;" #生成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="生成备注"):
|
||||
if ret[0] in pro_dict:
|
||||
pro_dict[ret[0]]["remark"].append(f"{ret[1]}\t{ret[2]}")
|
||||
|
||||
sql = "SELECT * FROM lessonobj;" #生成obj_dict
|
||||
sql = "SELECT * FROM lessonobj WHERE NOT obsolete;" #生成obj_dict
|
||||
mycursor.execute(sql)
|
||||
ret_list = mycursor.fetchall()
|
||||
# print("生成课时目标dict中...")
|
||||
|
|
@ -1738,7 +1753,7 @@ def generateDictsfromMariaDB(mycursor):
|
|||
for ret in tqdm.tqdm(ret_list,desc = "构建课时目标顺序"):
|
||||
obj_dict[ret[0]]["predecessor"].append(ret[1])
|
||||
|
||||
sql = "SELECT * FROM unitobj;" #生成unit_obj_dict
|
||||
sql = "SELECT * FROM unitobj WHERE NOT obsolete;" #生成unit_obj_dict
|
||||
mycursor.execute(sql)
|
||||
ret_list = mycursor.fetchall()
|
||||
# print("生成单元目标dict中...")
|
||||
|
|
@ -1746,20 +1761,21 @@ def generateDictsfromMariaDB(mycursor):
|
|||
unit_obj_dict[ret[0]] = {"unitobjid":ret[0],"unitobjcontent":ret[1]}
|
||||
|
||||
|
||||
sql = "SELECT * FROM basic_knowledges;" #生成bn_dict
|
||||
sql = "SELECT * FROM basic_knowledges WHERE NOT obsolete;" #生成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的对应
|
||||
sql = "SELECT * FROM bn_obj_corresp WHERE NOT obsolete;" #生成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 = "对应基础知识与课时目标"):
|
||||
if ret[0] in bn_dict:
|
||||
bn_dict[ret[0]]["objs"].append(ret[1])
|
||||
return pro_dict,obj_dict,bn_dict,unit_obj_dict
|
||||
|
||||
|
|
@ -1843,7 +1859,7 @@ def generateLaTeXBodyContentfromMariaDB(cursor,id,misc): #根据id,读取的json
|
|||
# }
|
||||
# }
|
||||
id = str(id).zfill(6)
|
||||
sql = "SELECT content,ans,solution,origin,space FROM problems WHERE ID = %s;"
|
||||
sql = "SELECT content,ans,solution,origin,space FROM problems WHERE ID = %s AND NOT obsolete;"
|
||||
val = (id,)
|
||||
cursor.execute(sql,val)
|
||||
ret_list = cursor.fetchall()
|
||||
|
|
@ -1855,27 +1871,29 @@ def generateLaTeXBodyContentfromMariaDB(cursor,id,misc): #根据id,读取的json
|
|||
solution = ""
|
||||
origin = json.loads(raw_origin)
|
||||
#以下生成obj_list
|
||||
sql = "SELECT obj_ID FROM objcorresp WHERE ID = %s;"
|
||||
sql = "SELECT obj_ID FROM objcorresp WHERE ID = %s AND NOT obsolete;"
|
||||
cursor.execute(sql,val)
|
||||
ret_list = cursor.fetchall()
|
||||
obj_list = []
|
||||
for id_raw in ret_list:
|
||||
obj_id = id_raw[0]
|
||||
sql = "SELECT obj_content FROM lessonobj WHERE objid = %s;"
|
||||
sql = "SELECT obj_content FROM lessonobj WHERE objid = %s AND NOT obsolete;"
|
||||
if not obj_id.upper() == "KNONE":
|
||||
objval = (obj_id,)
|
||||
cursor.execute(sql,objval)
|
||||
obj_list.append(f"{obj_id}\t{cursor.fetchall()[0][0]}")
|
||||
retobj = cursor.fetchall()
|
||||
if len(retobj) >= 1:
|
||||
obj_list.append(f"{obj_id}\t{retobj[0][0]}")
|
||||
else:
|
||||
cursor.fetchall()
|
||||
obj_list.append(f"{obj_id}\t暂无目标对应")
|
||||
sql = "SELECT tagname FROM tagcorresp WHERE ID = %s;"
|
||||
sql = "SELECT tagname FROM tagcorresp WHERE ID = %s AND NOT obsolete;"
|
||||
cursor.execute(sql,val)
|
||||
tag_list = [t[0] for t in cursor.fetchall()]
|
||||
sql = "SELECT date,remark_content FROM remarks WHERE ID = %s;"
|
||||
sql = "SELECT date,remark_content FROM remarks WHERE ID = %s AND NOT obsolete;"
|
||||
cursor.execute(sql,val)
|
||||
remark_list = sorted([f"{t[0]}\t{t[1]}" for t in cursor.fetchall()])
|
||||
sql = "SELECT date,classname,diff FROM usages WHERE ID = %s;"
|
||||
sql = "SELECT date,classname,diff FROM usages WHERE ID = %s AND NOT obsolete;"
|
||||
cursor.execute(sql,val)
|
||||
usages_fetched = [(u[0] if not u[0] is None else "",u[1],json.loads(u[2])) for u in cursor.fetchall()]
|
||||
usages_raw = sorted(usages_fetched)
|
||||
|
|
@ -1943,7 +1961,7 @@ def generateLaTeXobjsfromMariaDB(cursor,objid):
|
|||
if objid == "KNONE":
|
||||
return ""
|
||||
else:
|
||||
sql = "SELECT obj_content FROM lessonobj WHERE objid = %s;"
|
||||
sql = "SELECT obj_content FROM lessonobj WHERE objid = %s AND not obsolete;"
|
||||
val = (objid,)
|
||||
cursor.execute(sql,val)
|
||||
obj_content = cursor.fetchall()[0][0]
|
||||
|
|
@ -1952,7 +1970,7 @@ def generateLaTeXobjsfromMariaDB(cursor,objid):
|
|||
|
||||
def generateLaTeXbnsfromMariaDB(cursor,bnid):
|
||||
bnid = str(bnid).upper().strip()
|
||||
sql = "SELECT bn_content FROM basic_knowledges WHERE bn_id = %s;"
|
||||
sql = "SELECT bn_content FROM basic_knowledges WHERE bn_id = %s AND not obsolete;"
|
||||
val = (bnid,)
|
||||
cursor.execute(sql,val)
|
||||
try:
|
||||
|
|
@ -2830,7 +2848,7 @@ def unUnitted(idexp,database): #返回adict中未赋单元的id列表
|
|||
idlist = generate_number_set(idexp)
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
|
||||
mycursor = mydb.cursor()
|
||||
mycursor.execute("SELECT ID FROM tagcorresp WHERE tagname REGEXP '第\\\\S*单元' or tagname = '暂无对应';")
|
||||
mycursor.execute("SELECT ID FROM tagcorresp WHERE tagname REGEXP '第\\\\S*单元' or tagname = '暂无对应' AND not obsolete;")
|
||||
unittedids = set([ret[0] for ret in mycursor.fetchall()])
|
||||
ununittedids = sorted(list(set(idlist)-unittedids))
|
||||
return ununittedids
|
||||
|
|
@ -3118,7 +3136,7 @@ def ChooseIDsByUsageInterval(startdate,enddate,interval,classregex,database): #
|
|||
usedproblems = []
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
|
||||
mycursor = mydb.cursor()
|
||||
sql = "SELECT ID,date,classname,diff FROM usages;"
|
||||
sql = "SELECT ID,date,classname,diff FROM usages where NOT obsolete;"
|
||||
mycursor.execute(sql)
|
||||
usage_list = mycursor.fetchall()
|
||||
for id,date,classname,diff_raw in usage_list:
|
||||
|
|
@ -3155,7 +3173,7 @@ def getAllIDsExp(database,obsincluded = True): #获取题库中所有题目的id
|
|||
if obsincluded:
|
||||
mycursor.execute("SELECT ID FROM problems;")
|
||||
else:
|
||||
mycursor.execute("SELECT ID FROM problems WHERE NOT content REGEXP 'OBS';")
|
||||
mycursor.execute("SELECT ID FROM problems WHERE NOT obsolete;")
|
||||
idlist = [ret[0] for ret in mycursor.fetchall()]
|
||||
return generate_exp(idlist)
|
||||
|
||||
|
|
@ -3173,7 +3191,7 @@ def parseRemark(string): #从一行remark字符串中分出日期和内容, 返
|
|||
|
||||
|
||||
def generateProDict(cursor): #从数据库的cursor中得到problems字典的content,ans,solution,genre字段
|
||||
cursor.execute("select ID,content,ans,solution,genre,origin from problems;")
|
||||
cursor.execute("select ID,content,ans,solution,genre,origin from problems WHERE NOT obsolete;")
|
||||
ret_list = cursor.fetchall()
|
||||
prodict = {ret[0]:{"content":ret[1],"ans":ret[2],"solution":ret[3],"genre":ret[4],"origin":json.loads(ret[5])} for ret in ret_list}
|
||||
return prodict
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class MyWindow_xgmb(QWidget,Ui_Form):
|
|||
else:
|
||||
self.obj_type = "error"
|
||||
if self.obj_type == "lesson":
|
||||
sql = "SELECT * FROM lessonobj WHERE objid = %s;"
|
||||
sql = "SELECT * FROM lessonobj WHERE objid = %s AND NOT obsolete;"
|
||||
val = (self.id,)
|
||||
self.cursor.execute(sql,val)
|
||||
ret_list = self.cursor.fetchall()
|
||||
|
|
@ -44,7 +44,7 @@ class MyWindow_xgmb(QWidget,Ui_Form):
|
|||
self.objcontent_raw = ret_list[0][1]
|
||||
self.plainTextEdit_objcontent.setPlainText(self.objcontent_raw)
|
||||
elif self.obj_type == "unit":
|
||||
sql = "SELECT * FROM unitobj WHERE unit_obj_id = %s;"
|
||||
sql = "SELECT * FROM unitobj WHERE unit_obj_id = %s AND NOT obsolete;"
|
||||
val = (self.id,)
|
||||
self.cursor.execute(sql,val)
|
||||
ret_list = self.cursor.fetchall()
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ class MyWindow_sxth(QWidget,Ui_Form):
|
|||
def exec(self):
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = self.database_name)
|
||||
mycursor = mydb.cursor()
|
||||
mycursor.execute("SELECT count(*) FROM problems WHERE NOT content REGEXP 'OBS';")
|
||||
mycursor.execute("SELECT count(*) FROM problems WHERE NOT obsolete;")
|
||||
self.lcdNumber_resCount.display(mycursor.fetchall()[0][0])
|
||||
self.matchlist = MatchConditioninMariaDB(self.conditions,self.database_name)
|
||||
self.lcdNumber_resCount.display(len(self.matchlist))
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class MyWindow_scjl(QWidget,Ui_Form):
|
|||
self.id = self.lineEdit_id.text().strip().zfill(6)
|
||||
self.dateregex = self.lineEdit_dateregex.text().strip()
|
||||
self.classregex = self.lineEdit_classregex.text().strip()
|
||||
self.mycursor.execute("SELECT * FROM usages WHERE ID = %s;",(self.id,))
|
||||
self.mycursor.execute("SELECT * FROM usages WHERE ID = %s AND not obsolete;",(self.id,))
|
||||
ret_list = self.mycursor.fetchall()
|
||||
self.usage_list = []
|
||||
for ret in ret_list:
|
||||
|
|
@ -47,15 +47,15 @@ class MyWindow_scjl(QWidget,Ui_Form):
|
|||
self.pushButton_del.setEnabled(False)
|
||||
def delete(self):
|
||||
self.mycursor = self.db.cursor()
|
||||
self.mycursor.execute("SELECT count(*) FROM usages;")
|
||||
self.mycursor.execute("SELECT count(*) FROM usages WHERE not obsolete;")
|
||||
print(f"预删除前有 {self.mycursor.fetchall()[0][0]} 条使用记录.")
|
||||
sql1 = "DELETE FROM usages WHERE ID = %s AND date = %s AND classname = %s AND diff = %s;"
|
||||
sql1 = "UPDATE usages SET obsolete = TRUE WHERE ID = %s AND date = %s AND classname = %s AND diff = %s;"
|
||||
sql2 = "INSERT INTO logs (DATE,TIME,username,action,id,db_content) VALUE (%s,%s,%s,%s,%s,%s);"
|
||||
for u in tqdm.tqdm(self.usage_list,desc = "删除使用记录"):
|
||||
self.mycursor.execute(sql1,u)
|
||||
self.mycursor.execute(sql1,u[:4])
|
||||
val = (GetDate(),GetTime(),get_git_username(),"删除使用记录",self.id,f"{u}")
|
||||
self.mycursor.execute(sql2,val)
|
||||
self.mycursor.execute("SELECT count(*) FROM usages;")
|
||||
self.mycursor.execute("SELECT count(*) FROM usages WHERE not obsolete;")
|
||||
print(f"删除后将有 {self.mycursor.fetchall()[0][0]} 条使用记录.")
|
||||
self.pushButton_commit.setEnabled(True)
|
||||
def commit(self):
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class MyWindow_scgx(QWidget,Ui_Form):
|
|||
self.lineEdit_todelete.textChanged.connect(self.enable_del)
|
||||
self.db = connect(hostname=db_host, port=db_port, username= db_user, pwd= db_pwd, db=self.database_name)
|
||||
self.mycursor = self.db.cursor()
|
||||
self.mycursor.execute("SELECT objid,obj_content FROM lessonobj;")
|
||||
self.mycursor.execute("SELECT objid,obj_content FROM lessonobj WHERE not obsolete;")
|
||||
ret_list = self.mycursor.fetchall()
|
||||
self.allobjs = ""
|
||||
for ret in ret_list:
|
||||
|
|
@ -42,7 +42,7 @@ class MyWindow_scgx(QWidget,Ui_Form):
|
|||
self.plainTextEdit_objs.setPlainText(self.allobjs)
|
||||
def getobj(self):
|
||||
objid = self.lineEdit_objid.text().strip()
|
||||
self.mycursor.execute("SELECT objid,obj_content FROM lessonobj WHERE objid = %s;",(objid,))
|
||||
self.mycursor.execute("SELECT objid,obj_content FROM lessonobj WHERE objid = %s AND not obsolete;",(objid,))
|
||||
ret_list = self.mycursor.fetchall()
|
||||
if len(ret_list) == 0 or len(ret_list) >= 2:
|
||||
self.plainTextEdit_objs.setPlainText("目标编号有误, 请重试!!!\n\n"+self.allobjs)
|
||||
|
|
@ -55,12 +55,12 @@ class MyWindow_scgx(QWidget,Ui_Form):
|
|||
self.tableWidget_prec.setRowCount(0)
|
||||
self.tableWidget_post.clearContents()
|
||||
self.tableWidget_post.setRowCount(0)
|
||||
self.mycursor.execute("SELECT inherit_from FROM objinherit WHERE objid = %s;",(self.objid,))
|
||||
self.mycursor.execute("SELECT inherit_from FROM objinherit WHERE objid = %s AND not obsolete;",(self.objid,))
|
||||
ret_list = self.mycursor.fetchall()
|
||||
for ret in ret_list:
|
||||
# print(ret)
|
||||
count += 1
|
||||
self.mycursor.execute("SELECT obj_content FROM lessonobj WHERE objid = %s;",(ret[0],))
|
||||
self.mycursor.execute("SELECT obj_content FROM lessonobj WHERE objid = %s AND not obsolete;",(ret[0],))
|
||||
prec_content = self.mycursor.fetchall()[0][0]
|
||||
self.tableWidget_prec.insertRow(count-1)
|
||||
self.tableWidget_prec.setItem(count-1,0,QTableWidgetItem(str(count)))
|
||||
|
|
@ -68,13 +68,13 @@ class MyWindow_scgx(QWidget,Ui_Form):
|
|||
self.tableWidget_prec.setItem(count-1,2,QTableWidgetItem(prec_content))
|
||||
self.corresp_list.append((count,self.objid,ret[0]))
|
||||
prec_count = count
|
||||
self.mycursor.execute("SELECT objid FROM objinherit WHERE inherit_from = %s;",(self.objid,))
|
||||
self.mycursor.execute("SELECT objid FROM objinherit WHERE inherit_from = %s AND not obsolete;",(self.objid,))
|
||||
ret_list = self.mycursor.fetchall()
|
||||
count = 0
|
||||
for ret in ret_list:
|
||||
# print(ret)
|
||||
count += 1
|
||||
self.mycursor.execute("SELECT obj_content FROM lessonobj WHERE objid = %s;",(ret[0],))
|
||||
self.mycursor.execute("SELECT obj_content FROM lessonobj WHERE objid = %s AND not obsolete;",(ret[0],))
|
||||
post_content = self.mycursor.fetchall()[0][0]
|
||||
self.tableWidget_post.insertRow(count-1)
|
||||
self.tableWidget_post.setItem(count-1,0,QTableWidgetItem(str(count+prec_count)))
|
||||
|
|
@ -95,7 +95,7 @@ class MyWindow_scgx(QWidget,Ui_Form):
|
|||
inherit_from = item[2]
|
||||
break
|
||||
self.mycursor = self.db.cursor()
|
||||
self.mycursor.execute("DELETE FROM objinherit WHERE objid = %s AND inherit_from = %s;",(objid,inherit_from))
|
||||
self.mycursor.execute("UPDATE objinherit SET obsolete = TRUE WHERE objid = %s AND inherit_from = %s;",(objid,inherit_from))
|
||||
sql = "INSERT INTO logs (DATE,TIME,username,action,db_content) VALUE (%s,%s,%s,%s,%s);"
|
||||
val = (GetDate(),GetTime(),get_git_username(),f"删除目标关联",f"{objid} <- {inherit_from}")
|
||||
self.mycursor.execute(sql,val)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class MyWindow_sctp(QWidget,Ui_Form):
|
|||
self.dpi = self.lineEdit_dpi.text()
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = self.database_name)
|
||||
mycursor = mydb.cursor()
|
||||
sql = "SELECT content FROM problems WHERE ID = %s;"
|
||||
sql = "SELECT content FROM problems WHERE ID = %s AND NOT obsolete;"
|
||||
val = (self.id.strip().zfill(6),)
|
||||
mycursor.execute(sql,val)
|
||||
content = mycursor.fetchall()[0][0]
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class MyWindow_bjjc(QWidget,Ui_Form):
|
|||
self.id = self.lineEdit_bnid.text().upper()
|
||||
if not self.id[0] == "B":
|
||||
self.id = "B" + str(int(self.id)).zfill(5)
|
||||
sql = "SELECT * FROM basic_knowledges WHERE bn_id = %s;"
|
||||
sql = "SELECT * FROM basic_knowledges WHERE bn_id = %s AND not obsolete;"
|
||||
val = (self.id,)
|
||||
self.cursor.execute(sql,val)
|
||||
ret_list = self.cursor.fetchall()
|
||||
|
|
@ -39,7 +39,7 @@ class MyWindow_bjjc(QWidget,Ui_Form):
|
|||
else:
|
||||
self.bn_content_raw = ret_list[0][1]
|
||||
self.plainTextEdit_content.setPlainText(self.bn_content_raw)
|
||||
sql = "SELECT * from bn_obj_corresp WHERE bn_id = %s;"
|
||||
sql = "SELECT * from bn_obj_corresp WHERE bn_id = %s AND not obsolete;"
|
||||
val = (self.id,)
|
||||
self.cursor.execute(sql,val)
|
||||
ret_list = self.cursor.fetchall()
|
||||
|
|
@ -48,10 +48,14 @@ class MyWindow_bjjc(QWidget,Ui_Form):
|
|||
for ret in ret_list:
|
||||
count += 1
|
||||
objid = ret[1]
|
||||
sql = "SELECT * FROM lessonobj WHERE objid = %s;"
|
||||
sql = "SELECT * FROM lessonobj WHERE objid = %s AND not obsolete;"
|
||||
val = (objid,)
|
||||
self.cursor.execute(sql,val)
|
||||
obj_content = self.cursor.fetchall()[0][1]
|
||||
retcontent = self.cursor.fetchall()
|
||||
if len(retcontent) >= 1:
|
||||
obj_content = retcontent[0][1]
|
||||
else:
|
||||
obj_content = "已作废"
|
||||
self.tableWidget_obj.setItem(count-1,0,QTableWidgetItem(objid))
|
||||
self.tableWidget_obj.setItem(count-1,1,QTableWidgetItem(obj_content))
|
||||
|
||||
|
|
|
|||
|
|
@ -20,11 +20,11 @@ def show_image():
|
|||
id = request.form['question_number'].zfill(6)
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = "tiku")
|
||||
mycursor = mydb.cursor()
|
||||
sql = "SELECT content FROM problems WHERE ID = %s;"
|
||||
sql = "SELECT content FROM problems WHERE ID = %s AND not obsolete;"
|
||||
val = (id,)
|
||||
mycursor.execute(sql,val)
|
||||
content = mycursor.fetchall()[0][0]
|
||||
sql = "SELECT date,remark_content FROM remarks WHERE ID = %s;"
|
||||
sql = "SELECT date,remark_content FROM remarks WHERE ID = %s AND not obsolete;"
|
||||
mycursor.execute(sql,val)
|
||||
remark_list = sorted(mycursor.fetchall(),key=lambda item:item[0],reverse=True)
|
||||
# print(remark_list)
|
||||
|
|
@ -71,7 +71,7 @@ def submit_remarks():
|
|||
# mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = "tikutest")
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = "tiku")
|
||||
mycursor = mydb.cursor()
|
||||
sql = f"SELECT * FROM remarks WHERE ID = %s and remark_content = %s;"
|
||||
sql = f"SELECT * FROM remarks WHERE ID = %s and remark_content = %s AND not obsolete;"
|
||||
val = (id,f"({category}){remarks}")
|
||||
print(f"({category}){remarks}")
|
||||
mycursor.execute(sql,val)
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class MyWindow_bdsl(QWidget,Ui_Form):
|
|||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = self.database_name)
|
||||
mycursor = mydb.cursor()
|
||||
|
||||
mycursor.execute("SELECT ID,content FROM problems;")
|
||||
mycursor.execute("SELECT ID,content FROM problems WHERE NOT obsolete;")
|
||||
ret_list = mycursor.fetchall()
|
||||
pro_dict = {i:j for i,j in ret_list}
|
||||
treated_dict = {i:pre_treating(pro_dict[i]) for i in pro_dict.keys()}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class MyWindow_tjjc(QWidget,Ui_Form):
|
|||
mycursor.execute(sql,val)
|
||||
print(f"已导入基础知识 编号: {bnid},\n 内容: {content}.")
|
||||
for objid in obj_list:
|
||||
sql = "SELECT * FROM lessonobj WHERE objid = %s;"
|
||||
sql = "SELECT * FROM lessonobj WHERE objid = %s AND NOT obsolete;"
|
||||
val = (objid,)
|
||||
mycursor.execute(sql,val)
|
||||
ret =mycursor.fetchall()
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ class MyWindow_xzgx(QWidget,Ui_Form):
|
|||
self.plainTextEdit_data.textChanged.connect(self.disable_import)
|
||||
self.db = connect(hostname=db_host, port=db_port, username= db_user, pwd= db_pwd, db=self.database_name)
|
||||
self.mycursor = self.db.cursor()
|
||||
self.mycursor.execute("SELECT objid from lessonobj;")
|
||||
self.mycursor.execute("SELECT objid from lessonobj WHERE NOT obsolete;")
|
||||
self.objids = [item[0] for item in self.mycursor.fetchall()]
|
||||
# print(self.objids)
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ class MyWindow_xzgx(QWidget,Ui_Form):
|
|||
for line in tqdm.tqdm(self.valid_lines):
|
||||
mainid = line[0]
|
||||
for precid in line[1]:
|
||||
self.mycursor.execute("SELECT * FROM objinherit WHERE objid = %s AND inherit_from = %s;",(mainid,precid))
|
||||
self.mycursor.execute("SELECT * FROM objinherit WHERE objid = %s AND inherit_from = %s AND not obsolete;",(mainid,precid))
|
||||
ret_list = self.mycursor.fetchall()
|
||||
if len(ret_list) >= 1:
|
||||
output += f"*** {mainid} 以 {precid} 为前序的记录已在数据库 {self.database_name} 中\n"
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ def index():
|
|||
# raw_pro_dict = load_dict("../题库0.3/Problems.json")
|
||||
# obj_dict = load_dict("../题库0.3/LessonObj.json")
|
||||
# basicknowledge_dict = load_dict("../题库0.3/BasicKnowledge.json")
|
||||
mycursor.execute("SELECT ID FROM problems;")
|
||||
mycursor.execute("SELECT ID FROM problems WHERE NOT obsolete;")
|
||||
id_list_in_DB = [ret[0] for ret in mycursor.fetchall()]
|
||||
id_dict = {a:[] for a in id_list_in_DB}
|
||||
problems_list = generate_number_set(pid,id_dict)
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class MyWindow_sjlb(QWidget,Ui_Form):
|
|||
buttontext = self.sender().text()
|
||||
# print(buttontext)
|
||||
self.mycursor = self.db.cursor()
|
||||
self.mycursor.execute("SELECT name,idexp,remark FROM papers WHERE genre = %s;",(buttontext,))
|
||||
self.mycursor.execute("SELECT name,idexp,remark FROM papers WHERE genre = %s AND NOT obsolete;",(buttontext,))
|
||||
ret_list = self.mycursor.fetchall()
|
||||
self.tableWidget_papers.setRowCount(len(ret_list))
|
||||
count = 0
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ class MyWindow_bjtm(QWidget,Ui_Form):
|
|||
def showcontent(self):
|
||||
self.field = "题目内容"
|
||||
self.label_2.setText(f"题号 {self.lineEdit_ID.text()} 的 {self.field} 字段")
|
||||
sql = "SELECT content FROM problems WHERE ID = (%s);"
|
||||
sql = "SELECT content FROM problems WHERE ID = (%s) AND NOT obsolete;"
|
||||
val = (self.lineEdit_ID.text().zfill(6),)
|
||||
self.cursor.execute(sql,val)
|
||||
ret = self.cursor.fetchall()
|
||||
|
|
@ -50,7 +50,7 @@ class MyWindow_bjtm(QWidget,Ui_Form):
|
|||
def showgenre(self):
|
||||
self.field = "类型"
|
||||
self.label_2.setText(f"题号 {self.lineEdit_ID.text()} 的 {self.field} 字段")
|
||||
sql = "SELECT genre FROM problems WHERE ID = (%s);"
|
||||
sql = "SELECT genre FROM problems WHERE ID = (%s) AND NOT obsolete;"
|
||||
val = (self.lineEdit_ID.text().zfill(6),)
|
||||
self.cursor.execute(sql,val)
|
||||
ret = self.cursor.fetchall()
|
||||
|
|
@ -62,7 +62,7 @@ class MyWindow_bjtm(QWidget,Ui_Form):
|
|||
def showans(self):
|
||||
self.field = "答案"
|
||||
self.label_2.setText(f"题号 {self.lineEdit_ID.text()} 的 {self.field} 字段")
|
||||
sql = "SELECT ans FROM problems WHERE ID = (%s);"
|
||||
sql = "SELECT ans FROM problems WHERE ID = (%s) AND NOT obsolete;"
|
||||
val = (self.lineEdit_ID.text().zfill(6),)
|
||||
self.cursor.execute(sql,val)
|
||||
ret = self.cursor.fetchall()
|
||||
|
|
@ -74,7 +74,7 @@ class MyWindow_bjtm(QWidget,Ui_Form):
|
|||
def showsolution(self):
|
||||
self.field = "解答"
|
||||
self.label_2.setText(f"题号 {self.lineEdit_ID.text()} 的 {self.field} 字段")
|
||||
sql = "SELECT solution FROM problems WHERE ID = (%s);"
|
||||
sql = "SELECT solution FROM problems WHERE ID = (%s) AND NOT obsolete;"
|
||||
val = (self.lineEdit_ID.text().zfill(6),)
|
||||
self.cursor.execute(sql,val)
|
||||
ret = self.cursor.fetchall()
|
||||
|
|
@ -86,7 +86,7 @@ class MyWindow_bjtm(QWidget,Ui_Form):
|
|||
def showorigin(self):
|
||||
self.field = "来源"
|
||||
self.label_2.setText(f"题号 {self.lineEdit_ID.text()} 的 {self.field} 字段")
|
||||
sql = "SELECT origin FROM problems WHERE ID = (%s);"
|
||||
sql = "SELECT origin FROM problems WHERE ID = (%s) AND NOT obsolete;"
|
||||
val = (self.lineEdit_ID.text().zfill(6),)
|
||||
self.cursor.execute(sql,val)
|
||||
ret = self.cursor.fetchall()
|
||||
|
|
@ -98,7 +98,7 @@ class MyWindow_bjtm(QWidget,Ui_Form):
|
|||
def showremarks(self):
|
||||
self.field = "备注"
|
||||
self.label_2.setText(f"题号 {self.lineEdit_ID.text()} 的 {self.field} 字段")
|
||||
sql = "SELECT date,remark_content FROM remarks WHERE ID = (%s);"
|
||||
sql = "SELECT date,remark_content FROM remarks WHERE ID = (%s) AND NOT obsolete;"
|
||||
val = (self.lineEdit_ID.text().zfill(6),)
|
||||
self.cursor.execute(sql,val)
|
||||
ret_list = self.cursor.fetchall()
|
||||
|
|
|
|||
Reference in New Issue