使用Python以MySQL json列格式插入Json数据

时间:2018-01-25 05:36:33

标签: python mysql json mysql-python

我正在尝试将我用Python抓取的Json数据插入到json列格式的MySQL表中

这是我创建的表格:

CREATE TABLE Json (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 rawJson JSON NOT NULL,
 dateCreated TIMESTAMP
)

以下是尝试插入Json数据的Python代码

import json
import string
import MySQLdb
import urllib2
conn = MySQLdb.connect(host= "localhost",
    user="####",
    passwd="####",
    db="####")
x = conn.cursor()

url = 'http://example.com/file.json'
data = json.load(urllib2.urlopen(url))

try:
    x.execute("""INSERT INTO `Json`(`rawJson`, `dateCreated`) VALUES (%s, UTC_TIMESTAMP())""", (data))
    conn.commit()
except: 
    conn.rollback()
    print "FAIL"

我能够手动获取json数据并将其插入表中,但在执行步骤中失败

2 个答案:

答案 0 :(得分:0)

here 将fp(一个.read() - 支持包含JSON文档的类文件对象)反序列化为 Python对象 。这意味着data是Python对象,但您期望它为%s(字符串)。这就是原因,它失败了。

所以,我假设下面给出了你期望的JSON

urllib2.urlopen(url)

然后,您需要更改

data = json.load(urllib2.urlopen(url))

data = urllib2.urlopen(url)

答案 1 :(得分:0)

我想这就是您要寻找的东西

     import json
     # data = {'my':'name','is':'taylor swift'}
     dumped_datas = json.dumps(data)
     x.execute("""INSERT INTO `Json`(`rawJson`) VALUES (%s)""", (data))

这将允许您将json / dict作为Json类型的对象放在Mysql中 json.dumps会将dict / json转换为字符串,mysql将其作为json