使用Python将JSON存储到sqlite数据库中

时间:2013-07-02 13:08:53

标签: python sqlite

我将JSON对象发回服务器端并通过请求检索该信息。现在这是我的 views.py

的代码
@csrf_exempt
def save(request):
    if request.method == 'POST':
        rawdata = request.body
        JSONData= json.dumps(rawdata)
    return HttpResponse(rawdata)

当我返回rawdata时,我的回答如下:

[{"time_elapsed":"0","volts":"239.3","amps":"19.3","kW":"4.618","kWh":"0","session":"1"},...]

当我返回JSONdata时,我的回答如下:

"[{\"time_elapsed\":\"0\",\"volts\":\"239.1\",\"amps\":\"20.8\",\"kW\":\"4.973\",\"kWh\":\"0\",\"session\":\"1\"},....]

尝试使用Python / Django将此数据插入sqlite数据库时哪个响应更好?

另外,我如何开始循环呢?我必须做这种代码吗?

conn = sqlite3.connect('sqlite.db')
c = conn.cursor()
c.execute("INSERT STATEMENTS")

我假设我必须为该代码的INSERT STATEMENTS部分做一个循环,但是我没有任何关键的工作。在我的数据中,{}之间的所有内容都是一行。每次看到{... data ...}将其插入新行时,如何遍历此数组?

2 个答案:

答案 0 :(得分:1)

以下是我最终解决问题的方法。这是一个弄清楚如何将JSON对象转换为python可以识别的东西,然后编写一个简单的循环来迭代生成的所有数据的问题。

@csrf_exempt
def save(request):
    if request.method == 'POST':
        rawdata1 = request.body
        rawdata2 = json.loads(rawdata1)
        length = len(rawdata2)
        for i in range(0,length,1):
            x = meterdata(time_elapsed=rawdata2[i]['time_elapsed'], volts=rawdata2[i]['volts'], amps=rawdata2[i]['amps'], kW=rawdata2[i]['kW'], kWh=rawdata2[i]['kWh'], session=rawdata2[i]['session'])
            x.save()        
    return HttpResponse("Success!")

最大的区别是json.loads而不是转储,而在for循环中如何访问新转换的数据。第一个括号指定要查看的行,第二个括号指定要查找的项目。我试图做数据[0] [0]的时间最长。愿这有助于将来发现这一点的人。

答案 1 :(得分:0)

可能如果您需要将数据存储在数据库中最好创建一个代表它的模型,那么您可以创建一个ModelForm来关联您的模型来处理您的POST。

以这种方式将模型保存到db是微不足道的,并将其序列化为json响应就像

data = serializers.serialize('json',
                             YourModel.objects.filter(id=id),
                             fields=('list','of','fields'))

return HttpResponse(data, mimetype='application/json')