【问题标题】:insert json data into MySQL database将json数据插入MySQL数据库
【发布时间】:2013-03-25 08:09:37
【问题描述】:

1.我想将数据库(mysql)中的数据保存为.json文件格式。

模型.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) 我可以得到帮助来编写相同的代码吗?

【问题讨论】:

    标签: django json django-models django-forms django-views


    【解决方案1】:

    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)
    

    如果要序列化模型的特定实例,[self] 周围的方括号很重要。如果您正在序列化一个查询集,那么您可以将其传入。

    【讨论】:

    • 先生,我试过上面的代码它没有将数据库数据写入json文件
    • 您对要写入文件的目录有写入权限吗?
    猜你喜欢
    • 2019-04-01
    • 2014-04-26
    • 2013-05-17
    • 2023-04-10
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    相关资源
    最近更新 更多