def get_all_products(self):
conn = self.connect()
cursor = conn.cursor()
# Используем JOIN, чтобы вместо цифр подтягивать реальные названия из справочников
query = """
SELECT
t.[id], -- r[0]: id товара (проверь название колонки в БД)
t.[Артикул], -- r[1]
nt.[name_tovar], -- r[2]: ТЕКСТ наименования
t.[Единица_измерения], -- r[3]
t.[Стоимость], -- r[4]
sup.[suplier_name], -- r[5]: ТЕКСТ поставщика
m.[maker_name], -- r[6]: ТЕКСТ производителя
cat.[male_name], -- r[7]: ТЕКСТ категории
t.[Действующая_скидка], -- r[8]
t.[Кол_во_на_складе], -- r[9]
t.[Описание], -- r[10]
t.[Изображение] -- r[11]
FROM [Tovar] t
LEFT JOIN [name_tovar] nt ON t.[Наименование_товара] = nt.[nam_id]
LEFT JOIN [supliers] sup ON t.[Поставщик] = sup.[sup_id]
LEFT JOIN [makers] m ON t.[Производитель] = m.[maker_id]
LEFT JOIN [male] cat ON t.[Категория _товара] = cat.[male_id]
"""
# Если SQL-сервер ругается на названия колонок, просто поправь их в SELECT выше
# на те, которые у тебя реально используются в базе.
cursor.execute(query)
rows = cursor.fetchall()
conn.close()
return [Product(
tovar_id=str(r[0]), article=str(r[1]), name=str(r[2]),
unit=str(r[3]), price=str(r[4]), supplier=str(r[5]),
manufacturer=str(r[6]), category=str(r[7]),
discount=str(r[8]), quantity=str(r[9]),
description=str(r[10]), photo=str(r[11])
) for r in rows]