45 lines
1.5 KiB
Python
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()
|