Files
SemesterapparatsManager/src/ui/widgets/admin_query.py

45 lines
1.5 KiB
Python

from PySide6 import QtCore, QtWidgets
from src.database import Database
from src.utils.icon import Icon
class AdminQueryWidget(QtWidgets.QWidget, Ui_Form):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.setWindowIcon(Icon("db_search").icon)
self.db = Database()
# Connect the button click to the method
self.sendquery.clicked.connect(self.on_pushButton_clicked)
def on_pushButton_clicked(self):
# Handle button click event
self.queryResult.setRowCount(0) # Clear previous results
request_text = self.sqlquery.toPlainText()
if not request_text.strip():
return
data = self.db.query_db(request_text)
# print(data)
table_names = (
request_text.lower().split("select")[1].split("from")[0].split(",")
)
table_names = [name.strip() for name in table_names]
# reset the horizontal header labels
self.queryResult.setHorizontalHeaderLabels(table_names)
for result in data:
row_position = self.queryResult.rowCount()
self.queryResult.insertRow(row_position)
for column, value in enumerate(result):
item = QtWidgets.QTableWidgetItem(str(value))
item.setFlags(item.flags() & ~QtCore.Qt.ItemFlag.ItemIsEditable)
self.queryResult.setItem(row_position, column, item)
def launch():
app = QtWidgets.QApplication([])
widget = AdminQueryWidget()
widget.show()
app.exec()