I want to use python to turn mysql into json, but when I use the following code, the result is json line by line, not a whole set of json
JavaScript
x
27
27
1
import pymysql
2
import json
3
sql="**"
4
5
conn=pymysql.connect(host='localhost',user='root',passwd="abc",db="mydatabase",port=123)
6
cur=conn.cursor()
7
cur.execute(sql)
8
data=cur.fetchall()
9
10
fields=cur.description
11
cur.close ()
12
conn.close()
13
14
column_list = []
15
for i in fields:
16
column_list.append(i[0])
17
18
for row in data:
19
result = {}
20
result[column_list[0]] = row[0]
21
result[column_list[1]] = row[1]
22
result[column_list[2]] = str(row[2])
23
result[column_list[3]] = row[3]
24
25
j=json.dumps(result)
26
print(j)
27
Advertisement
Answer
You need to pull out the json.dumps()
line from the for loop. This is resulting in conversion of into json with each iteration and printing in each iteration.
Your code should look like this :
JavaScript
1
29
29
1
import pymysql
2
import json
3
sql="**"
4
5
conn=pymysql.connect(host='localhost',user='root',passwd="abc",db="mydatabase",port=123)
6
cur=conn.cursor()
7
cur.execute(sql)
8
data=cur.fetchall()
9
10
fields=cur.description
11
cur.close ()
12
conn.close()
13
14
column_list = []
15
for i in fields:
16
column_list.append(i[0])
17
final_resultset = []
18
for row in data:
19
result = {}
20
result[column_list[0]] = row[0]
21
result[column_list[1]] = row[1]
22
result[column_list[2]] = str(row[2])
23
result[column_list[3]] = row[3]
24
25
final_resultset.append(result)
26
27
j=json.dumps(final_resultset)
28
print(j)
29