我正在尝试将我用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数据并将其插入表中,但在执行步骤中失败
答案 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