Вывод данных из Mysql в QTextEdit
После нажатия кнопки Показать результат вылетает с ошибкой
[{'id': 1, 'ФИО': 'фцв', 'Номер_группы': 'фцв', 'Результат': '2'}, {'id': 2, 'ФИО': 'фцв', 'Номер_группы': 'фцв', 'Результат': '5'}]
Traceback (most recent call last):
File "c:\main11.py", line 107, in new_method
if ╘╚╬ and ═юьхЁ_уЁєяя√ and ╨хчєы№ЄрЄ: # !!! +++
UnboundLocalError: local variable '╘╚╬' referenced before assignment
class ResyltatiWindow(QtWidgets.QMainWindow, Ui_ResyltTest):
def __init__(self, connection):
super(ResyltatiWindow, self).__init__()
self.setupUi(self)
self.connection = connection
self.cursor = self.connection.cursor()
self.cursor.execute("SELECT * FROM `students`")
self.cursor.execute("SELECT * FROM students ")
rows = self.cursor.fetchall()
print(rows)
self.connection.commit()
self.textEdit.setText(str(rows))
self.pushButtontomain_2.clicked.connect(self.new_method)
self.pushButtontomain.clicked.connect(self.returnToMain)
def new_method(self):
rows = self.cursor.fetchall()
for row in rows: # !!! +++
id, ФИО, Номер_группы, Результат = row # !!! +++ .values()
if ФИО and Номер_группы and Результат: # !!! +++
self.textEdit.append( # !!! +++
f'{id:>3} | {ФИО:>30} | {Номер_группы:>10} | {Результат:>3}' # !!! +++
)
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
class ResyltatiWindow(QtWidgets.QMainWindow): # ??? , Ui_ResyltTest):
def __init__(self): # , connection
super(ResyltatiWindow, self).__init__()
'''
self.setupUi(self)
self.connection = connection
self.cursor = self.connection.cursor()
self.cursor.execute("SELECT * FROM `students`")
self.connection.commit()
rows = self.cursor.fetchall()
self.textEdit.setText(str(rows))
'''
self.centralwidget = QtWidgets.QWidget()
self.setCentralWidget(self.centralwidget)
self.textEdit = QTextEdit()
self.textEdit.setFont(QFont("Consolas", 10)) # !!! +++
self.pushButton = QPushButton("Click me")
self.pushButton.clicked.connect(self.pushButton_clicked)
layout = QVBoxLayout(self.centralwidget)
layout.addWidget(self.textEdit)
layout.addWidget(self.pushButton)
def pushButton_clicked(self):
self.textEdit.clear()
# ...
# rows = self.cursor.fetchall()
# v^v^
rows = [
{
'id': 1,
'ФИО': 'Пупкин Вася',
'Номер_группы': 'группа 1',
'Результат': 2,
},
{
'id': 2,
'ФИО': None,
'Номер_группы': None,
'Результат': 2,
},
{
'id': 3,
'ФИО': 'Тигровая акула',
'Номер_группы': 'группа 1',
'Результат': 1,
},
{
'id': 4,
'ФИО': 'Tiger Shark',
'Номер_группы': 'группа 1',
'Результат': 5,
},
]
for row in rows: # !!! +++
id, fio, grup, rez = row.values() # !!! +++ .values()
if fio and grup and rez: # !!! +++
self.textEdit.append( # !!! +++
f'{id:>3} | {fio:>30} | {grup:>10} | {rez:>3}' # !!! +++
) # !!! +++
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = ResyltatiWindow()
w.resize(500, 200)
w.show()
sys.exit(app.exec_())
Update:
Еще раз, пожалуйста без фантазий, замените в своем классе ResyltatiWindow метод new_method():
def new_method(self):
rows = self.cursor.fetchall()
for row in rows: # !!! +++
id, ФИО, Номер_группы, Результат = row # !!! +++ .values()
if ФИО and Номер_группы and Результат: # !!! +++
self.textEdit.append( # !!! +++
f'{id:>3} | {ФИО:>30} | {Номер_группы:>10} | {Результат:>3}' # !!! +++
)
на:
def new_method(self):
rows = self.cursor.fetchall()
for row in rows: # !!! +++
id, fio, grup, rez = row.values() # !!! +++ .values()
if fio and grup and rez: # !!! +++
self.textEdit.append( # !!! +++
f'{id:>3} | {fio:>30} | {grup:>10} | {rez:>3}' # !!! +++
)



