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


def get_all_products(self):
        conn = self.connect()
        cursor = conn.cursor()
        
        # 1. Выгружаем все справочники в словари (ID -> Текст)
        cursor.execute("SELECT nam_id, tovar_name FROM name_tovar")
        names_dict = {str(row[0]): str(row[1]) for row in cursor.fetchall()}
        
        cursor.execute("SELECT sup_id, sup_name FROM supliers")
        supliers_dict = {str(row[0]): str(row[1]) for row in cursor.fetchall()}
        
        cursor.execute("SELECT maker_id, maker_name FROM makers")
        makers_dict = {str(row[0]): str(row[1]) for row in cursor.fetchall()}
        
        cursor.execute("SELECT male_id, male_name FROM male")
        categories_dict = {str(row[0]): str(row[1]) for row in cursor.fetchall()}
        
        # 2. Выполняем твой оригинальный безопасный запрос
        cursor.execute("SELECT * FROM Tovar")
        rows = cursor.fetchall()
        conn.close()
        
        products = []
        for r in rows:
            # Получаем ID-шники из ячеек
            name_id = str(r[2]) if r[2] else ""
            sup_id = str(r[5]) if r[5] else ""
            maker_id = str(r[6]) if r[6] else ""
            cat_id = str(r[7]) if r[7] else ""
            
            # Подставляем текст из словаря с помощью метода get(). 
            # Если ключа нет, он оставит старое значение.
            products.append(Product(
                tovar_id=str(r[0]), 
                article=str(r[1]), 
                name=names_dict.get(name_id, name_id),
                unit=str(r[3]), 
                price=str(r[4]), 
                supplier=supliers_dict.get(sup_id, sup_id), 
                manufacturer=makers_dict.get(maker_id, maker_id), 
                category=categories_dict.get(cat_id, cat_id), 
                discount=str(r[8]) if r[8] else "0", 
                quantity=str(r[9]) if r[9] else "0", 
                description=str(r[10]) if r[10] else "", 
                photo=str(r[11]) if r[11] else ""
            ))
            
        return products