Как оформить код подключения к SQL Server правильно в класс, чтобы таблица UserException выводилась в форму

Как оформить код подключения к SQL Server правильно в класс, а вывод таблицы в метод класса, чтобы таблица UserException выводилась в форму lr4 в таблицу ? Код ниже осуществляет подключение к бд (работает и верно выводит в консоль).

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String

SERVER = 'SQLEXPRESS'
DATABASE = 'university'
USERNAME = 'vika'
PASSWORD = 'vvv'
DRIVER = 'ODBC Driver 17 for SQL Server'
DATABASE_CONNECTION = f'mssql+pyodbc://{USERNAME}:{PASSWORD}@{SERVER}/{DATABASE}?driver={DRIVER}'

engine = create_engine(DATABASE_CONNECTION, echo=True)
connection = engine.connect()

meta = MetaData()

UserException = Table('UserException', meta,
                     Column('id', Integer, primary_key=True),
                     Column('message', String),
                     Column('target_site', String),
                     Column('date_time_exc', DateTime),
                     Column('index_form', Integer))


s = UserException.select()
conn = engine.connect()
result = conn.execute(s)

for row in result:
   print(row)

lr4Window должен лишь отображать записи из бд


class lr4Window(QtWidgets.QMainWindow):
    def __init__(self, log_text_box):
        super(lr4Window, self).__init__()
        self.ui = Ui_Main_lr4()
        self.ui.setupUi(self)
        self.log_text_box = log_text_box


Прикрепляю еще класс в котором описан интерфейс формы.

class Ui_Main_lr4(object):
    def setupUi(self, Main_lr4):
        Main_lr4.setObjectName("Main_lr4")
        Main_lr4.resize(800, 345)
        self.centralwidget = QtWidgets.QWidget(Main_lr4)
        self.centralwidget.setObjectName("centralwidget")
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(10, 10, 781, 261))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(178, 173, 240))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(216, 214, 247))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(89, 86, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(119, 115, 160))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(178, 173, 240))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(216, 214, 247))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.AlternateBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(178, 173, 240))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(216, 214, 247))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(89, 86, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(119, 115, 160))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(178, 173, 240))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(216, 214, 247))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.AlternateBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(89, 86, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(178, 173, 240))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(216, 214, 247))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(89, 86, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(119, 115, 160))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(89, 86, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
        brush = QtGui.QBrush(QtGui.QColor(89, 86, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(178, 173, 240))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(178, 173, 240))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(178, 173, 240))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.AlternateBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipText, brush)
        self.tableWidget.setPalette(palette)
        font = QtGui.QFont()
        font.setBold(True)
        font.setItalic(False)
        font.setUnderline(False)
        font.setWeight(75)
        font.setStrikeOut(False)
        font.setKerning(True)
        font.setStyleStrategy(QtGui.QFont.PreferDefault)
        self.tableWidget.setFont(font)
        self.tableWidget.setMouseTracking(False)
        self.tableWidget.setFocusPolicy(QtCore.Qt.NoFocus)
        self.tableWidget.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
        self.tableWidget.setShowGrid(True)
        self.tableWidget.setGridStyle(QtCore.Qt.CustomDashLine)
        self.tableWidget.setWordWrap(True)
        self.tableWidget.setCornerButtonEnabled(True)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(5)
        self.tableWidget.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(4, item)
        Main_lr4.setCentralWidget(self.centralwidget)

        self.retranslateUi(Main_lr4)
        QtCore.QMetaObject.connectSlotsByName(Main_lr4)

    def retranslateUi(self, Main_lr4):
        _translate = QtCore.QCoreApplication.translate
        Main_lr4.setWindowTitle(_translate("Main_lr4", "MainWindow"))
        self.tableWidget.setSortingEnabled(False)
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("Main_lr4", "id"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("Main_lr4", "Message"))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("Main_lr4", "TargetSite"))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("Main_lr4", "Data TimeExc"))
        item = self.tableWidget.horizontalHeaderItem(4)
        item.setText(_translate("Main_lr4", "IndexForm"))


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

Автор решения: S. Nick

Попробуйте взглянуть на пример. Я думаю, что это вам должно помочь.

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore    import pyqtSlot
from PyQt5.QtWidgets import QWidget, QMessageBox, QTableWidgetItem

from sqlalchemy.engine              import create_engine
from sqlalchemy.ext.declarative.api import declarative_base
from sqlalchemy.orm.session         import sessionmaker
from sqlalchemy.sql.expression      import and_
from sqlalchemy.sql.schema          import Column
from sqlalchemy.sql.sqltypes        import Integer, Text


# интерфейс формы
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 362)
        self.gridLayout = QtWidgets.QGridLayout(Form)
        self.gridLayout.setObjectName("gridLayout")
        self.checkBoxName = QtWidgets.QCheckBox(Form)
        self.checkBoxName.setObjectName("checkBoxName")
        self.gridLayout.addWidget(self.checkBoxName, 0, 0, 1, 1)
        self.checkBoxSeat = QtWidgets.QCheckBox(Form)
        self.checkBoxSeat.setObjectName("checkBoxSeat")
        self.gridLayout.addWidget(self.checkBoxSeat, 0, 2, 1, 1)
        self.lineEditName = QtWidgets.QLineEdit(Form)
        self.lineEditName.setObjectName("lineEditName")
        self.gridLayout.addWidget(self.lineEditName, 0, 1, 1, 1)
        self.tableWidget = QtWidgets.QTableWidget(Form)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(10)
        self.tableWidget.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(5, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(6, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(7, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(8, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(9, item)
        self.gridLayout.addWidget(self.tableWidget, 3, 0, 1, 4)
        self.lineEditSeat = QtWidgets.QLineEdit(Form)
        self.lineEditSeat.setObjectName("lineEditSeat")
        self.gridLayout.addWidget(self.lineEditSeat, 0, 3, 1, 1)
        self.lineEditPort = QtWidgets.QLineEdit(Form)
        self.lineEditPort.setObjectName("lineEditPort")
        self.gridLayout.addWidget(self.lineEditPort, 1, 3, 1, 1)
        self.checkBoxPort = QtWidgets.QCheckBox(Form)
        self.checkBoxPort.setObjectName("checkBoxPort")
        self.gridLayout.addWidget(self.checkBoxPort, 1, 2, 1, 1)
        self.checkBoxLicense = QtWidgets.QCheckBox(Form)
        self.checkBoxLicense.setObjectName("checkBoxLicense")
        self.gridLayout.addWidget(self.checkBoxLicense, 1, 0, 1, 1)
        self.lineEditLicense = QtWidgets.QLineEdit(Form)
        self.lineEditLicense.setObjectName("lineEditLicense")
        self.gridLayout.addWidget(self.lineEditLicense, 1, 1, 1, 1)
        self.pushButtonQuery = QtWidgets.QPushButton(Form)
        self.pushButtonQuery.setObjectName("pushButtonQuery")
        self.gridLayout.addWidget(self.pushButtonQuery, 2, 0, 1, 4)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.checkBoxName.setText(_translate("Form", "Имя"))
        self.checkBoxSeat.setText(_translate("Form", "# места"))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("Form", "номер"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Имя"))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Номер документа"))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Номер рейса"))
        item = self.tableWidget.horizontalHeaderItem(4)
        item.setText(_translate("Form", "Дата полета"))
        item = self.tableWidget.horizontalHeaderItem(5)
        item.setText(_translate("Form", "# места"))
        item = self.tableWidget.horizontalHeaderItem(6)
        item.setText(_translate("Form", "Посадочные ворота"))
        item = self.tableWidget.horizontalHeaderItem(7)
        item.setText(_translate("Form", "Серийный номер"))
        item = self.tableWidget.horizontalHeaderItem(8)
        item.setText(_translate("Form", "место вылета"))
        item = self.tableWidget.horizontalHeaderItem(9)
        item.setText(_translate("Form", "Пункт назначения"))
        self.checkBoxPort.setText(_translate("Form", "Посадочные ворота"))
        self.checkBoxLicense.setText(_translate("Form", "Номер документа"))
        self.pushButtonQuery.setText(_translate("Form", "Запрос"))


engine = create_engine('sqlite:///data_q1204186.sqlite3', echo=True)  

Base = declarative_base()


class Tourist(Base):
    __tablename__ = 'tourist'

    id                 = Column(Integer, primary_key=True)
    name               = Column(Text)
    license            = Column(Text)
    flightnumber       = Column(Text)
    flightdate         = Column(Text)
    seatnumber         = Column(Text)
    boardingport       = Column(Text)
    no                 = Column(Text)
    departurestation   = Column(Text)
    destinationstation = Column(Text)


class Window(QWidget, Ui_Form):
    def __init__(self, *args, **kwargs):
        super(Window, self).__init__(*args, **kwargs)
        self.setupUi(self)
        
        # Поле сращивания sql
        self.sql = {}
        
        # database подключение
        self.session = sessionmaker(bind=engine)()

    @pyqtSlot()
    def on_pushButtonQuery_clicked(self):
        """ Кнопка запроса """
        self.applyName()
        self.applySeat()
        self.applyLicense()
        self.applyPort()
        if not self.sql:
            return QMessageBox.warning(self, 'Запрос', 'Нет ввода')
            
        # Очистить данные
        self.tableWidget.clear()
        
        # заголовок
        self.tableWidget.setHorizontalHeaderLabels(
            ['номер', 'Полное имя', '# документа', '# рейса', 'дата полета', 
            '# места', 'выезд', 'серийный номер', 'Место вылета', 'Пункт назначения'])
            
        # Параллельный запрос на основе выбранных полей
        rets = self.session.query(Tourist).filter(
            and_(*(key == value for key, value in self.sql.items()))).all()
        if not rets:
            return QMessageBox.information(self, 'Подсказка', 'Не найдено результатов')
            
        self.tableWidget.setRowCount(len(rets))
        # Добавить в таблицу на основе результатов запроса
        for row, tourist in enumerate(rets):
            self.tableWidget.setItem(row, 0, QTableWidgetItem(str(tourist.id)))
            self.tableWidget.setItem(
                row, 1, QTableWidgetItem(str(tourist.name)))
            self.tableWidget.setItem(
                row, 2, QTableWidgetItem(str(tourist.license)))
            self.tableWidget.setItem(
                row, 3, QTableWidgetItem(str(tourist.flightnumber)))
            self.tableWidget.setItem(
                row, 4, QTableWidgetItem(str(tourist.flightdate)))
            self.tableWidget.setItem(
                row, 5, QTableWidgetItem(str(tourist.seatnumber)))
            self.tableWidget.setItem(
                row, 6, QTableWidgetItem(str(tourist.boardingport)))
            self.tableWidget.setItem(row, 7, QTableWidgetItem(str(tourist.no)))
            self.tableWidget.setItem(
                row, 8, QTableWidgetItem(str(tourist.departurestation)))
            self.tableWidget.setItem(
                row, 9, QTableWidgetItem(str(tourist.destinationstation)))

    def applyName(self):
        """ Имя """
        if not self.checkBoxName.isChecked():
            if Tourist.name in self.sql:
                # удаление
                self.sql.pop(Tourist.name)
        # Update или добавить в словарь
        else:
            self.sql[Tourist.name] = self.lineEditName.text().strip()

    def applySeat(self):
        """ номер места """
        if not self.checkBoxSeat.isChecked():
            if Tourist.seatnumber in self.sql:
                self.sql.pop(Tourist.seatnumber)
        else:
            self.sql[Tourist.seatnumber] = self.lineEditSeat.text().strip()

    def applyLicense(self):
        """ Номер документа """
        if not self.checkBoxLicense.isChecked():
            if Tourist.license in self.sql:
                self.sql.pop(Tourist.license)
        else:
            self.sql[Tourist.license] = self.lineEditLicense.text().strip()

    def applyPort(self):
        """ Посадочные ворота """
        if not self.checkBoxPort.isChecked():
            if Tourist.boardingport in self.sql:
                self.sql.pop(Tourist.boardingport)
        else:
            self.sql[Tourist.boardingport] = self.lineEditPort.text().strip()


if __name__ == '__main__':
    import sys
    import cgitb
    sys.excepthook = cgitb.Hook(1, None, 5, sys.stderr, 'text')
    from PyQt5.QtWidgets import QApplication
    app = QApplication(sys.argv)
    w = Window()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка