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


import sys
import psycopg2
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QPushButton
from PyQt5.QtCore import Qt

# ПОДСТАВЬ СВОИ ДАННЫЕ
DB_CONFIG = {
    "dbname": "publishing_center",
    "user": "postgres",
    "password": "123456",
    "host": "localhost",
    "port": 5432
}

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Заказы")
        self.setGeometry(100, 100, 800, 600)
        
        # Центральный виджет
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        
        # Вертикальный layout
        layout = QVBoxLayout()
        central_widget.setLayout(layout)
        
        # Кнопка обновить
        self.btn_refresh = QPushButton("Обновить заказы")
        self.btn_refresh.clicked.connect(self.load_orders)
        layout.addWidget(self.btn_refresh)
        
        # QLabel для вывода заказов (тупо текст)
        self.label_orders = QLabel("Нажмите 'Обновить заказы'")
        self.label_orders.setAlignment(Qt.AlignTop | Qt.AlignLeft)
        self.label_orders.setWordWrap(True)
        self.label_orders.setStyleSheet("font-family: monospace; font-size: 12px; padding: 10px;")
        layout.addWidget(self.label_orders)
        
        # Автоматически загрузить при старте
        self.load_orders()
    
    def load_orders(self):
        """Загрузить все заказы и вывести в QLabel"""
        try:
            conn = psycopg2.connect(**DB_CONFIG)
            cur = conn.cursor()
            
            cur.execute("""
                SELECT 
                    o.order_id,
                    o.order_date,
                    o.execute_date,
                    o.quantity,
                    b.title,
                    b.sale_price,
                    c.name
                FROM orders o
                JOIN book b ON o.book_code = b.book_code
                JOIN customer c ON o.customer_id = c.customer_id
                ORDER BY o.order_date DESC;
            """)
            
            rows = cur.fetchall()
            cur.close()
            conn.close()
            
            if not rows:
                self.label_orders.setText("ЗАКАЗОВ НЕТ")
                return
            
            # Формируем текст для QLabel
            text = "=" * 60 + "\n"
            text += "ВСЕ ЗАКАЗЫ\n"
            text += "=" * 60 + "\n\n"
            
            for order in rows:
                order_id, order_date, execute_date, qty, title, price, customer = order
                text += f"ЗАКАЗ №{order_id}\n"
                text += f"  Заказчик: {customer}\n"
                text += f"  Книга: {title}\n"
                text += f"  Кол-во: {qty} шт.\n"
                text += f"  Цена: {price:.2f} руб.\n"
                text += f"  Дата заказа: {order_date}\n"
                text += f"  Выполнен: {execute_date if execute_date else 'НЕТ'}\n"
                text += "-" * 60 + "\n"
            
            self.label_orders.setText(text)
            
        except Exception as e:
            self.label_orders.setText(f"ОШИБКА ПОДКЛЮЧЕНИЯ К БД:\n{str(e)}\n\nПроверь пароль и настройки!")

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