如何使用python在jjango mysql数据库中存储json?

时间:2014-01-06 15:39:52

标签: python mysql django json

故事BackGround:

我想使用python编程语言将json对象存储在django mysql数据库中。 但是我收到了一个错误。

配置:

  • OS:Ubuntu 12.04 64bits
  • 程序语言:python
  • 框架:django
  • 数据库:mysql
  • 对象需要存储:json

代码参考:

json_objects={ u'name': u'REF_1', u'text': u'it is apple', u'time': u'20131210T120039Z'}

代码:

- > models.py

from django.db import models
class Messages(models.Model):
        id           = models.AutoField(primary_key=True)
        received     = models.DateTimeField(null=False)
        name         = models.TextField()
        data         = models.TextField()
        text         = models.TextField()
        word         = models.TextField()

        def __unicode__(self):
            return self.text

- > views.py

from threechannels.models import Messages
data_send_to_db=Messages.objects.create(received=datetime.strptime(json_objects["time"], "%Y%m%dT%H%M%SZ"),name=json_objects_post["name"],data=json_objects_dumps,text=json_objects["text"],word=related_words_hits)

我收到的错误:

DatabaseError:(1054,“字段列表'中的未知列'数据'”)

如果我将json_objects更改为objects = json.dumps(json_objects),我得到另一个错误:字符串索引必须是整数而不是字符串。我认为json_objects_post [“name”]会导致这个问题。

任何提示??? 非常感谢。

2 个答案:

答案 0 :(得分:1)

对我来说,似乎你的json_objects是一个简单的python字典。所以这是一个有效的操作:

received=datetime.strptime(json_objects["time"], "%Y%m%dT%H%M%SZ")

但这不是:

name=json_objects_post["name"]

我不确定你想用" _post"但是你可以按原样使用python字典:

name=json_objects["name"]

另外还有其他领域:

data=json_objects

data=json.dumps(json_objects)

等...

答案 1 :(得分:0)

原始代码:

data_send_to_db=Messages.objects.create(received=datetime.strptime(json_objects["time"], "%Y%m%dT%H%M%SZ"),name=json_objects_post["name"],data=json_objects_dumps,text=json_objects["text"],word=related_words_hits)

<强>的变化:

data_send_to_db=Messages(received=datetime.strptime(json_objects["time"], "%Y%m%dT%H%M%SZ"),name=json_objects_post["name"],data=json_objects_dumps,text=json_objects["text"],word=related_words_hits)

它有效......