使用 Python 在 MySQL 中插入来自 JSON 对象的多行
insert multiple rows from JSON object in MySQL with Python
我试图将 JSON 对象中的多行添加到 MySQL 中,但只有最后一行被添加到数据库中。有没有类似"for each row"的解决方案?
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"}]
您应该将 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"]))
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()
我试图将 JSON 对象中的多行添加到 MySQL 中,但只有最后一行被添加到数据库中。有没有类似"for each row"的解决方案?
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"}]
您应该将 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"]))
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()