Python 如何从SQL查询创建JSON文件?

Python 如何从SQL查询创建JSON文件?,python,json,sqlite,Python,Json,Sqlite,我正在从SQL查询创建一个JSON文件。但我无法真正创造。问题是有一个“items”对象,它有产品。但我的产品不是直接在“项目”对象中创建的 密码 import json import collections import sqlite3 conn = sqlite3.connect('database.db') cursor = conn.cursor() cursor.execute("SELECT barcode,listPrice,salePrice FROM product

我正在从SQL查询创建一个JSON文件。但我无法真正创造。问题是有一个“items”对象,它有产品。但我的产品不是直接在“项目”对象中创建的

密码

import json
import collections
import sqlite3

conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.execute("SELECT barcode,listPrice,salePrice FROM productstable")
rows = cursor.fetchall()

objects_list = []
for row in rows:
    d = collections.OrderedDict()
    d["barcode"] = row[0]
    d["listPrice"] = row[1]
    d["salePrice"] = row[2]
    objects_list.append(d)
j = json.dumps(objects_list,indent=4)
with open("products.json", "w") as f:
    f.write(j)
conn.close()
结果生成以下JSON对象

[
    {
        "barcode": "1952084972279",
        "listPrice": 100.5,
        "salePrice": 99
    },
    {
        "barcode": "1952084972280",
        "listPrice": 115.3,
        "salePrice": 100
    }
]
而期望的结果应该如下所示

{
    "items": [
        {
            "barcode": "1952084972279",
            "salePrice": 100.5,
            "listPrice": 99
        },
        {
            "barcode": "1952084972280",
            "salePrice": 115.3,
            "listPrice": 100
        }
    ]
}

将对象列表定义为字典而不是列表

objects\u list={}
对象列表[“项目”]=[]
并附加到
对象列表[“项”]

objects\u list[“items”]。追加(d)

您可以使用SQLite代码执行此操作:

SELECT json_object("items",
         json_group_array(
           json_object(
             'barcode', barcode, 
             'listPrice', listPrice, 
             'salePrice', salePrice
           )
         )
       ) result
FROM productstable
请参阅。
结果:


谢谢你的帮助。我得写字典:)谢谢你,亲爱的巴巴拉斯·霍卡姆。你让这个问题可以理解。不客气,兄弟:)这看起来不错。我可以在Postgre中使用它吗?@HASANHÜSEYİNYÜCEL我相信Postgresql也有类似的功能。我可以检查一下,如果我发现什么,我会把它发出去。@HASANHÜSEYİNYÜCEL你是说链接:它对我有用。试试这个:also@HASANHÜSEYİNYÜCEL For Postgresql更简单:或者:非常有用:)谢谢
{"items":
  [
    {"barcode":"1952084972279","listPrice":100.5,"salePrice":99.0}, 
    {"barcode":"1952084972280","listPrice":115.3,"salePrice":100.0}
  ]
}