【问题标题】:Insert Json data in MySQL json column format using Python使用 Python 以 MySQL json 列格式插入 Json 数据
【发布时间】:2018-01-25 05:36:32
【问题描述】:

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

【问题讨论】:

  • 您应该将简单的raise 添加到except 块中以查看错误回溯。

标签: python mysql json mysql-python


【解决方案1】:

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

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

urllib2.urlopen(url)

那么,你需要改变

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

data = urllib2.urlopen(url)

【讨论】:

    【解决方案2】:

    我猜这就是你要找的东西:

         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

    【讨论】:

      猜你喜欢
      • 2017-12-31
      • 2018-03-02
      • 2011-05-14
      • 2016-01-17
      • 2014-08-16
      • 2017-02-24
      • 2018-05-31
      • 2012-08-31
      • 2021-08-07
      相关资源
      最近更新 更多