Загрузка данных


import sys
from PyQt6.QtWidgets import *
from PyQt6.QtSql import QSqlDatabase, QSqlQueryModel, QSqlQuery
from PyQt6.QtCore import Qt

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Автозаправка")
        self.setGeometry(100, 100, 800, 600)
        
        # Подключение к БД
        db = QSqlDatabase.addDatabase("QMYSQL")
        db.setHostName("localhost")
        db.setDatabaseName("avtozapravka")  # название БД
        db.setUserName("root")               # логин
        db.setPassword("")                   # пароль
        
        if not db.open():
            QMessageBox.critical(self, "Ошибка", "Не удалось подключиться к БД!")
            return
        
        # Центральный виджет
        central = QWidget()
        self.setCentralWidget(central)
        layout = QVBoxLayout(central)
        
        # Выбор таблицы
        self.combo = QComboBox()
        self.combo.addItems(["clients", "firma", "topilvo", "sales", "otchet"])
        self.combo.currentTextChanged.connect(self.load_data)
        layout.addWidget(self.combo)
        
        # Таблица
        self.table = QTableView()
        layout.addWidget(self.table)
        
        # Загружаем первую таблицу
        self.load_data("clients")
    
    def load_data(self, table_name):
        model = QSqlQueryModel()
        model.setQuery(f"SELECT * FROM {table_name}")
        
        if model.lastError().isValid():
            QMessageBox.critical(self, "Ошибка", model.lastError().text())
            return
        
        self.table.setModel(model)
        self.table.resizeColumnsToContents()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())