2013-04-03 3 views
0

1. Я хочу сохранить данные из базы данных (mysql) в формат .json.Вставьте данные json в базу данных MySQL

Models.py

class Author(models.Model): 
    author_id = models.AutoField(primary_key=True) 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=40) 
    email = models.EmailField() 
    age=models.IntegerField() 

    class Meta: 
    db_table=u'Author' 

    def __unicode__(self): 
     return u"%d %s %s %s %d" % (self.pk, self.first_name, self.last_name, self.email,self.age) 



class Book(models.Model): 
    book_id=models.AutoField(primary_key=True,unique=True) 
    book_name=models.CharField(max_length=30) 
    publisher_name=models.CharField(max_length=40) 
    author=models.ForeignKey(Author) 

    class Meta: 
     db_table = u'Book' 

    def __unicode__(self): 
     return u'%d %s %s' % (self.pk, self.book_name, self.publisher_name) 

views.py является

def addbook(request): 

    log.debug("test....") 
    if request.POST: 

     first_name = request.POST.get('first_name') 
     last_name = request.POST.get('last_name') 
     email = request.POST.get('email') 
     age = request.POST.get('age') 

    author = Author(first_name = first_name,last_name = last_name,email=email,age=age) 
     author.save() 

     book_name = request.POST.get('book_name') 
     publisher_name = request.POST.get('publisher_name') 
     author_info = Author.objects.latest('author_id') 

     log.debug("test:%s",author_info.author_id) 

    book=Book(book_name=book_name,publisher_name=publisher_name,author_id=author_info.author_id) 
    book.save() 
    return redirect('/index/') 
    else: 
     return render_to_response('addbook.html',context_instance=RequestContext(request)) 

1) В views.py функцию addbook используется для добавления соответствующих данных в базе данных.

2) Я должен хранить содержимое базы данных в json-файле после каждой записи.

3) Могу ли я получить помощь, чтобы закодировать то же самое.

ответ

0

This link объясняет, как сериализовать модели Django. Вы должны добавить что-то вроде этого, чтобы ваш код модели:

from django.core import serializers 

class Book(models.Model): 
    ... 
    def serialize(self): 
     JSONSerializer = serializers.get_serializer("json") 
     json_serializer = JSONSerializer() 
     with open("/path/to/file/file.json", "w") as out: 
      json_serializer.serialize([self], stream=out) 

квадратные скобки [] я очень важны, если вы хотите сериализовать конкретный экземпляр модели. Если вы сериализуете набор запросов, вы можете передать это вместо этого.

+0

sir, я пробовал приведенный выше код, он не записывает данные базы данных в файл json. – 2013-04-04 05:33:49

+0

У вас есть право на запись в каталог, в который вы пишете файл? –