2013-04-04 147 views
0

在我的應用程序中,我試圖將數據庫數據保存到JSON文件中。使用python將數據庫數據存儲到json文件中

這裏是我的views.py:

if request.POST: 
     form = BookForm(request.POST) 
     if form.is_valid(): 
      cd = form.cleaned_data 
      form.save() 

      JSONSerializer = serializers.get_serializer("json") 
      json_serializer = JSONSerializer() 
      with open("book.json", "w") as out: 
       json_serializer.serialize(Book.objects.all(), stream=out) 

     return redirect('/index/') 
    return render_to_response('addbook.html',{ 'form':form },context_instance=RequestContext(request)) 

我使用串行做這件事。
問題是數據保存在數據庫中,但沒有寫入文件。

我收到以下錯誤,在運行上面的代碼

IOError at /addbook/ 
[Errno 2] No such file or directory: 'fixtures/book.json' 
Request Method: POST 
Request URL: http://localhost:8000/addbook/ 
Django Version: 1.3.7 
Exception Type: IOError 
Exception Value:  
[Errno 2] No such file or directory: 'fixtures/book.json' 
Exception Location: /root/Samples/DemoApp/DemoApp/views.py in addbook, line 53 
Python Executable: /usr/bin/python 
Python Version: 2.7.0 
+0

你必須把正確的路徑book.json – catherine 2013-04-04 09:27:45

+0

好代碼看上去一切正常,這可能是一個權限問題 – dusual 2013-04-04 09:33:40

+0

Catherine,如何設置路徑,因爲我的.json文件位於我的應用程序內的一個名爲fixtures的文件夾中。可以與我分享一個小創意 – 2013-04-04 10:27:13

回答

1
path = "{0}/app_name/fixtures/book.json".format(settings.PROJECT_ROOT) 
with open(path, "w") as out: 
    json_serializer.serialize(Book.objects.all(), stream=out) 
+1

真正上面的代碼適用於我,謝謝凱瑟琳 – 2013-04-04 10:54:36

+0

歡迎...... :) – catherine 2013-04-04 10:55:32

相關問題