from PySide6.QtWidgets import QWidget, QApplication, QFileDialog from Ui_删除使用记录 import Ui_Form from database_tools_2 import * class MyWindow_scjl(QWidget,Ui_Form): def __init__(self,database_name): super().__init__() self.database_name = database_name self.current_database_name = database_name self.setupUi(self) self.bind() def setdbname(self,string): self.database_name = string self.pushButton_del.setDisabled(True) self.pushButton_commit.setDisabled(True) try: self.db.close() except: pass self.db = connect(hostname=db_host, port=db_port, username= db_user, pwd= db_pwd, db=self.database_name) # print(self.database_name) def bind(self): self.pushButton_del.setDisabled(True) self.pushButton_commit.setDisabled(True) self.pushButton_find.clicked.connect(self.find) self.pushButton_del.clicked.connect(self.delete) self.pushButton_commit.clicked.connect(self.commit) self.db = connect(hostname=db_host, port=db_port, username= db_user, pwd= db_pwd, db=self.database_name) def find(self): self.mycursor = self.db.cursor() 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 AND not obsolete;",(self.id,)) ret_list = self.mycursor.fetchall() self.usage_list = [] for ret in ret_list: if re.findall(self.dateregex,ret[1]) != [] and re.findall(self.classregex,ret[2]) != []: self.usage_list.append(ret) output = f"已找到 {len(self.usage_list)} 个使用记录:\n\n具体如下:\n" for u in self.usage_list: output += (f"题号: {u[0]}, 日期: {u[1]}, 班级: {u[2]}, 难度: {u[3]}\n") self.plainTextEdit_result.setPlainText(output) if len(self.usage_list) >= 1: self.pushButton_del.setEnabled(True) else: self.pushButton_del.setEnabled(False) def delete(self): self.mycursor = self.db.cursor() self.mycursor.execute("SELECT count(*) FROM usages WHERE not obsolete;") print(f"预删除前有 {self.mycursor.fetchall()[0][0]} 条使用记录.") 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[:4]) val = (GetDate(),GetTime(),get_git_username(),"删除使用记录",self.id,f"{u}") self.mycursor.execute(sql2,val) 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): self.db.commit() self.pushButton_del.setDisabled(True) self.pushButton_commit.setDisabled(True) if __name__ == '__main__': app = QApplication([]) windows = MyWindow_scjl("tikutest") windows.show() app.exec()