2013-07-02 3 views
0

Я отправляю объект JSON обратно на сервер и получаю эту информацию через запрос. Сейчас это мой код для моего views.pyСохранение JSON в базе данных sqlite с использованием Python

@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\"},....] 

Какой ответ лучше при попытке вставить эти данные в базу данных sqlite с использованием Python/Django?

Также как мне начать цикл для этого, я должен сделать такой код?

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

Я предполагаю, что я должен сделать петлю для части ВСТАВИТЬ ОТЧЕТНОСТЬ этого кода, но у меня нет никакого ключа для работы прочь. В моих данных все между {} - одна строка. Как я повторяю этот массив, каждый раз, когда вы видите {... data ...}, вставляете его в новую строку?

+0

Почему вы храните JSON как в базе данных SQLite? Обычно у вас будет модель для этого. Я понимаю призыв SQLite, но вы можете посмотреть [CouchDB] (http://couchdb.apache.org/), который использует JSON для документов. – ChrisP

+0

Я просто изучаю все это. Мне дали конечную цель, и я медленно пробираюсь сквозь нее. Это то, что я смог сделать сам и много помощи со стороны окружающих и на этом сайте. Основываясь на этом комментарии и одном ответе, я думаю, я не понимаю, что такое ModelForm и как его использовать. – Khamey

ответ

0

Вот как я в конечном счете решить мою проблему. Речь шла о том, как перевести объект 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, а не свалок и в для цикла, как получить доступ к новообращенным данным. Первая скобка указывает строку для поиска, а вторая указывает, какой элемент искать. в течение долгого времени я пытался делать данные [0] [0]. Пусть это поможет любому, кто найдет это в будущем.

0

Возможно, если вам нужно сохранить эти данные в db, лучше всего создать модель, представляющую его, тогда вы создадите ModelForm с соответствующей вашей моделью для обработки вашего POST.

Таким образом спасительной модель к БД тривиальна и сериализации его в ответ JSON-то вроде

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

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

У меня есть модель, написанная для этого. Модель точно имитирует формат объекта JSON. Есть ли учебник или пример, который вы могли бы связать для использования ModelForms? Я не понимаю, что я действительно не использую форму. Данные, которые у меня есть, случайным образом генерируются в таблицу HTML, а затем считываются в объект JSON из таблицы HTML. Ни один из них не создан пользователем. – Khamey

+0

вы можете пропустить часть модели, взгляните на этот ответ, чтобы узнать, как бороться с внешним json http://stackoverflow.com/questions/11487447/converting-json-to-model-instance-in-django – DRC

Смежные вопросы