我将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 ...}将其插入新行时,如何遍历此数组?
答案 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')