import sys
import os
import mysql.connector
from dotenv import load_dotenv
from PyQt6.QtWidgets import QApplication, QTableWidget, QTableWidgetItem
load_dotenv()
conn = mysql.connector.connect(
host=os.getenv("DB_HOST"),
user=os.getenv("DB_USER"),
password=os.getenv("DB_PASSWORD"),
database=os.getenv("DB_NAME"),
port=int(os.getenv("DB_PORT", 3306))
)
cur = conn.cursor()
cur.execute("SELECT * FROM view_1")
data = cur.fetchall()
headers = [i[0] for i in cur.description]
app = QApplication(sys.argv)
table = QTableWidget()
table.setWindowTitle("Данные из view_1")
table.resize(900, 400)
table.setColumnCount(len(headers))
table.setRowCount(len(data))
table.setHorizontalHeaderLabels(headers)
for i, row in enumerate(data):
for j, value in enumerate(row):
table.setItem(i, j, QTableWidgetItem(str(value)))
table.show()
cur.close()
conn.close()
sys.exit(app.exec())
DROP VIEW IF EXISTS view_1;
CREATE VIEW view_1 AS
SELECT
d.department_name AS otdel,
COUNT(DISTINCT e.employee_id) AS kolvo_sotrudnikov,
COUNT(DISTINCT p.project_id) AS kolvo_proektov,
COUNT(DISTINCT t.task_id) AS kolvo_zadach,
SUM(
CASE
WHEN t.status = 'выполнена' THEN 1
ELSE 0
END
) AS vypolneno_zadach
FROM departments d
LEFT JOIN employees e ON d.department_id = e.department_id
LEFT JOIN tasks t ON e.employee_id = t.employee_id
LEFT JOIN projects p ON t.project_id = p.project_id
GROUP BY d.department_id, d.department_name;