讲义与答题纸信息查询脚本编写完成
This commit is contained in:
parent
0c311dccd5
commit
be848bc7cc
|
|
@ -0,0 +1,82 @@
|
|||
from PySide6.QtWidgets import QWidget, QTableWidgetItem, QApplication
|
||||
from Ui_讲义与答题纸信息查询 import Ui_Form
|
||||
from database_tools_2 import *
|
||||
|
||||
|
||||
class MyWindow_jycx(QWidget,Ui_Form):
|
||||
def __init__(self,database_name):
|
||||
super().__init__()
|
||||
self.setupUi(self)
|
||||
self.database_name = database_name
|
||||
self.bind()
|
||||
def bind(self):
|
||||
self.tableWidget.setColumnWidth(0,100)
|
||||
self.tableWidget.setColumnWidth(1,350)
|
||||
self.tableWidget.setColumnWidth(2,240)
|
||||
self.pushButton_nid.clicked.connect(self.exec_nid)
|
||||
self.pushButton_name.clicked.connect(self.exec_name)
|
||||
self.pushButton_pid.clicked.connect(self.exec_pid)
|
||||
|
||||
def setdbname(self,string):
|
||||
self.database_name = string
|
||||
# print(self.database_name)
|
||||
|
||||
def select_data(self,method):
|
||||
field = {"nid": "notes.nid", "pid": "answersheets.pid", "name": "notes.name"}
|
||||
regex = {"nid": self.lineEdit_nid.text(), "pid": self.lineEdit_pid.text(), "name": self.lineEdit_name.text()}
|
||||
mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = self.database_name)
|
||||
mycursor = mydb.cursor()
|
||||
sql = 'SELECT notes.nid,notes.name,answersheets.pid FROM notes LEFT JOIN answersheets ON notes.nid = answersheets.nid WHERE NOT notes.obsolete AND ' +field[method]+' REGEXP %s;'
|
||||
val = (regex[method],)
|
||||
mycursor.execute(sql,val)
|
||||
ret_raw_info = mycursor.fetchall()
|
||||
self.infos = []
|
||||
for nid,name,pid in ret_raw_info:
|
||||
if pid is None:
|
||||
self.infos.append((nid,name,"无答题纸"))
|
||||
else:
|
||||
sql = 'SELECT obsolete FROM answersheets WHERE pid = %s;'
|
||||
val = (pid,)
|
||||
mycursor.execute(sql,val)
|
||||
ret = mycursor.fetchall()
|
||||
if ret[0][0] == False:
|
||||
self.infos.append((nid,name,pid))
|
||||
else:
|
||||
self.infos.append((nid,name,"作废"))
|
||||
mydb.close()
|
||||
|
||||
def show_infos(self):
|
||||
self.tableWidget.clearContents()
|
||||
self.tableWidget.setRowCount(len(self.infos))
|
||||
sorted_infos = sorted(self.infos, key=lambda x: x[0][1:5]+x[0][0]+x[0][5:])
|
||||
for i in range(len(self.infos)):
|
||||
nid,name,pid = sorted_infos[i]
|
||||
self.tableWidget.setItem(i,0,QTableWidgetItem(nid))
|
||||
self.tableWidget.setItem(i,1,QTableWidgetItem(name))
|
||||
self.tableWidget.setItem(i,2,QTableWidgetItem(pid))
|
||||
|
||||
|
||||
def exec_nid(self):
|
||||
self.select_data("nid")
|
||||
self.show_infos()
|
||||
|
||||
def exec_name(self):
|
||||
self.select_data("name")
|
||||
self.show_infos()
|
||||
|
||||
def exec_pid(self):
|
||||
self.select_data("pid")
|
||||
self.show_infos()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication([])
|
||||
windows = MyWindow_jycx("tikutest")
|
||||
windows.show()
|
||||
app.exec()
|
||||
|
||||
Reference in New Issue