PyQt5 GUI закрывается без ошибки при работе с MySQL базой данных

Как подключить MySQL к PyQt5 приложению?
Да возможно это глупый вопрос, но я уже пару дней ломаю себе голову. Просто когда создаю обычную консольную программу и подключаюсь к своей локальной базе данных. Все хорошо, данные отображаются нормально, могу вносить данные, редактировать и т.д. (test1.py, на gist).
Но когда вот уже подключаю эту же логику к обычному PyQt приложению он просто не работает, ни в консоли, ни где нет ошибки или предупреждений.

Сделал так, чтобы GUI сначала создалась, а затем добавил на кнопку метод извлечения данных из БД, но когда нажимаю кнопку GUI просто выключается и скрипт останавливается (test.py на gist)

test.py:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QVBoxLayout
from mysql.connector import connect, Error as MySQLError

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.label = QLabel('0')
        self.button = QPushButton('Set text')
        self.clear_btn = QPushButton('Clear')

        layout = QVBoxLayout()
        layout.addWidget(self.label)
        layout.addWidget(self.button)
        layout.addWidget(self.clear_btn)

        self.setLayout(layout)

        self.button.clicked.connect(self.setValue)
        self.clear_btn.clicked.connect(self.clearValue)

        self.setWindowTitle('My App')
        self.resize(400, 300)
        self.show()

    def setValue(self):
        try:
            db = connect(
                host='localhost',
                user='root',
                password='root',
                database='mudule2'
            )
            
            cursor = db.cursor()
            
            cursor.execute('SELECT * FROM clients')
            clients = cursor.fetchall()
            print(clients)
            
        except MySQLError as e:
            self.label.setText(f"Error: {e}")
            print(f"Error: {e}")
        
    def clearValue(self):
        self.label.setText('0')

def gui():
    app = QApplication(sys.argv)
    window = MyWindow()
    sys.exit(app.exec_())
    
def test_db():
    try:
        db = connect(
            host='localhost',
            user='root',
            password='root',
            database='mudule2'
        )
            
        cursor = db.cursor()
            
        cursor.execute('SELECT * FROM clients')
        clients = cursor.fetchall()
        print(clients)
            
    except MySQLError as e:
        print(f"Error: {e}")
    except Exception as e:
        print(f"Error: {e}")
        

if __name__ == '__main__':
    gui()

Gist: https://gist.github.com/IndiMops/3aebb052963b26c8938c53033b1d8548

Так возможно, я чего-то не догоняю, поэтому я и пришел к вам на помощь.
Спасибо за ваши ответы и объяснения наперед.


Ответы (0 шт):