【问题标题】:insert multiple rows from JSON object in MySQL with Python使用 Python 从 MySQL 中的 JSON 对象插入多行
【发布时间】:2019-02-25 20:02:07
【问题描述】:

我正在尝试将 JSON 对象中的多行添加到 MySQL 中,但只有最后一行添加到数据库中。有没有像“每一行”这样的解决方案?

import requests
import json
import pymysql
import urllib.request

con = pymysql.connect(host = 'host', port = 3306, user = 'user', passwd = 'pass', db = 'db')
cursor = con.cursor()
url = 'url to json'
urllib.request.urlopen(url).read()
response = urllib.request.urlopen(url).read()
json_obj = str(response, 'utf-8')
json_obj = json.loads(response.decode('utf-8'))

for obj in json_obj:
    print(obj["one"])
    print(obj["two"])
    print(obj["three"])
    print(obj["four"])
    print(obj["five"])
    print(obj["six"])
    print(obj["seven"])

cursor.execute("INSERT INTO test (one, two, three, four, five, six, seven) VALUES (%s,%s,%s,%s,%s,%s,%s)", (obj["one"], obj["two"], obj["three"], obj["four"], obj["five"], obj["six"], obj["seven"]))

con.commit()
con.close()

JSON 对象如下所示,一次可以保存 5 到 50 条记录

[{"one":"1.232.123","two":"test","three":1242,"four":"2,4","five":"test","six":"test","seven":"test"},{"one":"3.322.876","two":"test","three":1312,"four":"3,4","five":"test","six":"test","seven":"test"},{"one":"1.232.123","two":"test","three":1242,"four":"2,4","five":"test","six":"test","seven":"test"},{"one":"3.322.876","two":"test","three":1312,"four":"3,4","five":"test","six":"test","seven":"test"}]

【问题讨论】:

    标签: python mysql python-3.x mysql-python


    【解决方案1】:

    cursor.execute 中的缩进错误。 这是固定代码

    import requests
    import json
    import pymysql
    import urllib.request
    
    con = pymysql.connect(host = 'host', port = 3306, user = 'user', passwd = 'pass', db = 'db')
    cursor = con.cursor()
    url = 'url to json'
    urllib.request.urlopen(url).read()
    response = urllib.request.urlopen(url).read()
    json_obj = str(response, 'utf-8')
    json_obj = json.loads(response.decode('utf-8'))
    
    for obj in json_obj:
        print(obj["one"])
        print(obj["two"])
        print(obj["three"])
        print(obj["four"])
        print(obj["five"])
        print(obj["six"])
        print(obj["seven"])
    
        cursor.execute("INSERT INTO test (one, two, three, four, five, six, seven) VALUES (%s,%s,%s,%s,%s,%s,%s)", (obj["one"], obj["two"], obj["three"], obj["four"], obj["five"], obj["six"], obj["seven"]))
    
    con.commit()
    con.close()
    

    【讨论】:

      【解决方案2】:

      您应该将INSERT 语句放在for 循环中:

      for obj in json_obj:
          print(obj["one"])
          print(obj["two"])
          print(obj["three"])
          print(obj["four"])
          print(obj["five"])
          print(obj["six"])
          print(obj["seven"])
      
          cursor.execute("INSERT INTO test (one, two, three, four, five, six, seven) VALUES (%s,%s,%s,%s,%s,%s,%s)", (obj["one"], obj["two"], obj["three"], obj["four"], obj["five"], obj["six"], obj["seven"]))
      

      【讨论】:

        猜你喜欢
        • 2020-02-24
        • 2021-09-27
        • 2019-09-07
        • 2019-03-17
        • 2016-04-30
        • 2018-03-02
        • 2011-05-14
        • 2019-09-11
        • 2016-05-04
        相关资源
        最近更新 更多