首页 > 解决方案 > SQL 查询在 {key:value} 对中返回缺少键(列名)的元组输出

问题描述

我想以键:值格式从数据库表中检索数据。但是通过使用 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
}

标签: python

解决方案


您可以使用cursor.description来获取字段名称,然后可以使用列表推导式来创建包含查询结果的字典列表。

这应该会给你一些接近你想要的输出的东西。

records = cursor.fetchall()

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

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

推荐阅读