SQL-запрос возвращает вывод в виде кортежа с отсутствующим ключом (имя столбца) в паре {ключ:значение}

#python

Вопрос:

Я хочу получить данные из таблицы базы данных в формате ключ:значение. Но, используя SQL-запрос, я получаю значение только в формате кортежа.

Вот мой код:

 query = "SELECT * FROM `stock_"   str(
            user_id)   "` INNER JOIN product ON stock_"   str(
            user_id)   ".product_id=product.id WHERE product.category="   category   
            " AND product.sub_category ="   sub_category

cursor.execute(query)
records = cursor.fetchall()
print(records)
 

И вот результат:

 (11, datetime.datetime(2020, 1, 23, 2, 7, 59),10,500,400,100,20.0)
 

и мой ожидаемый результат:

 {
            "id": 11,
            "expiry_date": "2020-07-01",
            "quantity": 10,
            "mrp": 500,
            "selling_price": 400,
            "discount_prize": 100,
            "discount_percent": 20.0
}
 

Комментарии:

1. Почему вы ожидаете такого результата? fetchall возвращает список кортежей.

2. Хорошо. есть ли какой-нибудь другой выход? мне нужен вывод с соответствующим именем столбца

Ответ №1:

Вы можете использовать cursor.description для получения имен полей, а затем использовать понимание списка для создания списка словарей с результатами запроса.

Это должно дать вам что-то близкое к желаемому результату.

 records = cursor.fetchall()

fields = [field[0] for field in cursor.description]

data = [dict(zip(fields, record))  for record in records]