Вывод данных из 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}'     # !!! +++
                ) 
→ Ссылка