修改工具v4的dabatase_tools,使得数据库名不用全局变量设置

This commit is contained in:
wangweiye7840 2024-04-25 17:23:47 +08:00
parent 12ffd17e28
commit d795ce995c
1 changed files with 34 additions and 34 deletions

View File

@ -114,8 +114,8 @@ def findsru(id,alist): #在same_list中寻找与id相同的题号
def findsameinDB(id): #在数据库中寻找与id相同的题号
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_database)
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);"
val = (id,)
@ -126,8 +126,8 @@ def findsameinDB(id): #在数据库中寻找与id相同的题号
set2 = set([ret[0] for ret in mycursor.fetchall()])
return sorted(list(set1 | set2))
def findrelatedinDB(id): #在数据库中寻找与id关联的题号
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_database)
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);"
val = (id,)
@ -138,8 +138,8 @@ def findrelatedinDB(id): #在数据库中寻找与id关联的题号
set2 = set([ret[0] for ret in mycursor.fetchall()])
return sorted(list(set1 | set2))
def get_unit_tags(id):
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_database)
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);"
val = (id,)
@ -148,8 +148,8 @@ def get_unit_tags(id):
mydb.close()
return unittags
def get_problem_content(id):
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_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);"
val = (id,)
@ -159,25 +159,25 @@ def get_problem_content(id):
return content
def generate_same_list():
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_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;")
same_list = [(ret[0],ret[1]) for ret in mycursor.fetchall()]
mydb.close()
return same_list.copy()
def generate_related_list():
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_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;")
related_list = [(ret[0],ret[1]) for ret in mycursor.fetchall()]
mydb.close()
return related_list.copy()
def treat_dict(): #对整个题库字典中的内容部分进行预处理,删除无用字符
def treat_dict(database): #对整个题库字典中的内容部分进行预处理,删除无用字符
treated_dict = {}
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_database)
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;")
p_dict = {id:content for id,content in mycursor.fetchall()}
@ -367,8 +367,8 @@ def usedIDs(database_name): #返回已使用题号, 已更新为适合mariadb的
mydb.close()
return output #返回的是一个多行的字符串, 每一行中含有一个已使用题号的闭区间
def spareIDs(database_name): #返回空闲题号, 已更新为适合mariadb的版本
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database_name)
def spareIDs(database): #返回空闲题号, 已更新为适合mariadb的版本
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;")
idlist = [ret[0] for ret in mycursor.fetchall()]
@ -382,8 +382,8 @@ def spareIDs(database_name): #返回空闲题号, 已更新为适合mariadb的
return output #返回的是一个多行的字符串, 每一行中含有一个空闲题号的闭区间
def NextSpareID(num): #返回adict中下一个空闲的题号
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_database)
def NextSpareID(num,database): #返回adict中下一个空闲的题号
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;")
idlist = [ret[0] for ret in mycursor.fetchall()]
@ -393,8 +393,8 @@ def NextSpareID(num): #返回adict中下一个空闲的题号
mydb.close()
return num
def NextSpareIDBlock(num): #返回adict中下一个空闲的题号块
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_database)
def NextSpareIDBlock(num,database): #返回adict中下一个空闲的题号块
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;")
idlist = [ret[0] for ret in mycursor.fetchall()]
@ -504,8 +504,8 @@ def CreateNewProblem(id,content,origin,dict,editor): # 构建一道新题目的
NewProblem["edit"] = [editor]
return NewProblem # 返回一道新题目的字典, 已赋新的ID, 内容, 来源和编辑者
def AddRelatedProblemToDB(id,content,oid,editor):
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_database)
def AddRelatedProblemToDB(id,content,oid,editor,database):
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
mycursor = mydb.cursor()
id = str(id).zfill(6)
content = content.strip()
@ -538,8 +538,8 @@ def AddRelatedProblemToDB(id,content,oid,editor):
mydb.close()
return id
def AddProblemstoDict2024(startingid,raworigin,problems,editor,indexed): #将来自GenerateProblemListFromString的列表中的题目添加到thedict字典, 返回题号列表(包括用老题号替代的题目)
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_database)
def AddProblemstoDict2024(startingid,raworigin,problems,editor,indexed,database): #将来自GenerateProblemListFromString的列表中的题目添加到thedict字典, 返回题号列表(包括用老题号替代的题目)
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
mycursor = mydb.cursor()
idlist = []
id = int(startingid)
@ -617,9 +617,9 @@ def CreateIDLinks(old_id_list,new_id_list): #建立已有id和新id之间的联
return id_links # 返回id联系, 每个元组表示一对id, 前者是旧id, 后者是新id
def CreateRelatedProblems(links): # 根据links关联生成待编辑的新题目字典, 等待编辑修改
def CreateRelatedProblems(links,database): # 根据links关联生成待编辑的新题目字典, 等待编辑修改
output = "\\begin{enumerate}\n"
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_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;"
for id,rid in links:
@ -1284,7 +1284,7 @@ def generate_origin(origin_dict):
return data
def MatchConditioninMariaDB(condition_list):
def MatchConditioninMariaDB(condition_list,database):
corr_dict = {
"content": ('problems','content'),
"objs": ('objcorresp','obj_ID'),
@ -1298,7 +1298,7 @@ def MatchConditioninMariaDB(condition_list):
"related": ('related','ID','RELATED_ID'),
"usages": ('usages','date','classname','diff')
}
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_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';")
match = set([u[0] for u in mycursor.fetchall()])
@ -2469,9 +2469,9 @@ def generateAnswerList(string,anspreamble = "答案: \\textcolor{red}{"): #从La
return anslist
def unUnitted(idexp): #返回adict中未赋单元的id列表
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 = db_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 tagcorresp WHERE tagname REGEXP '\\\\S*单元' or tagname = '暂无对应';")
unittedids = set([ret[0] for ret in mycursor.fetchall()])
@ -2756,10 +2756,10 @@ def RefineExclude(excludejson): #将excludejson的key变为6位题号
return newjson
def ChooseIDsByUsageInterval(startdate,enddate,interval,classregex): #返回根据条件选出的题号字典及对应小题, 需要留意的记录长度不一的题号, 以及所有使用过的题号
def ChooseIDsByUsageInterval(startdate,enddate,interval,classregex,database): #返回根据条件选出的题号字典及对应小题, 需要留意的记录长度不一的题号, 以及所有使用过的题号
validusages = []
usedproblems = []
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_database)
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;"
mycursor.execute(sql)
@ -2792,8 +2792,8 @@ def ChooseIDsByUsageInterval(startdate,enddate,interval,classregex): #返回根
return (chosenproblems,cautionids,usedproblems) #返回根据条件选出的题号字典及对应小题, 需要留意的记录长度不一的题号, 以及所有使用过的题号
def getAllIDsExp(obsincluded = True): #获取题库中所有题目的id(含:,)字符串, 不含
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = db_database)
def getAllIDsExp(database,obsincluded = True): #获取题库中所有题目的id(含:,)字符串, 不含
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = database)
mycursor = mydb.cursor()
if obsincluded:
mycursor.execute("SELECT ID FROM problems;")