【发布时间】:2020-03-10 21:49:38
【问题描述】:
我编写了一些从 SQL 服务器输出 JSON 文件的代码,但 JSON 文件非常混乱。它重复了一些数据,非常混乱:
JSON 输出文件:
[["Name: ", "Trenton", "Age: ", "16", "Losses: ", "0"]][["Name: ", "Trenton", "Age: ", "16", "Losses: ", "0"], ["Name: ", "Max", "Age: ", "15", "Losses: ", "0"]][["Name: ", "Trenton", "Age: ", "16", "Losses: ", "0"], ["Name: ", "Max", "Age: ", "15", "Losses: ", "0"], ["Name: ", "Corbin", "Age: ", "16", "Losses: ", "0"]][["Name: ", "Trenton", "Age: ", "16", "Losses: ", "0"], ["Name: ", "Max", "Age: ", "15", "Losses: ", "0"], ["Name: ", "Corbin", "Age: ", "16", "Losses: ", "0"], ["Name: ", "TJ", "Age: ", "17", "Losses: ", "0"]][["Name: ", "Trenton", "Age: ", "16", "Losses: ", "0"], ["Name: ", "Max", "Age: ", "15", "Losses: ", "0"], ["Name: ", "Corbin", "Age: ", "16", "Losses: ", "0"], ["Name: ", "TJ", "Age: ", "17", "Losses: ", "0"], ["Name: ", "Xander", "Age: ", "16", "Losses: ", "0"]]
代码:
import psycopg2
import json
try:
connection = psycopg2.connect(user="postgres", password="password", host="192.168.1.88", port="5432", database="losers")
cursor = connection.cursor()
postgreSQL_select_Query = "select * from people"
cursor.execute(postgreSQL_select_Query)
loss_records = cursor.fetchall()
lossarray_list = []
for row in loss_records:
t = (row[0], row[1], row.[2])
lossarray_list.append(t)
with open('data.json', 'a') as out:
json.dump(lossarray_list, out)
except (Exception, psycopg2.Error) as error:
print("Error while fetching data from database", error)
finally:
if(connection):
cursor.close()
connection.close()
输出应该类似于下面的链接
[{"Name: ", "Name1", "Age: ", "16", "Losses: ", "0"}],[{"Name: ", "Name2", "Age: ", "16", "Losses: ", "0"}],[{"Name: ", "Name3", "Age: ", "16", "Losses: ", "0"}],[{"Name: ", "Name4", "Age: ", "16", "Losses: ", "0"}],[{"Name: ", "Name5", "Age: ", "16", "Losses: ", "0"}]
发生了什么,我该如何解决?
【问题讨论】:
-
不要将资源作为外部链接发布。这只会让我们更难提供帮助。
-
不要在循环中调用
json.dump()。将所有内容放在一个列表中,最后对整个内容调用json.dump()。 -
每次循环时,您都会在
lossarray_list中添加一个新行,然后将整个内容转储到 json 文件中。所以你最终会得到第一行重复 N 次,第二行重复 N-1 次,等等。 -
小心使用
except,就像你在这里一样。参见,例如:stackoverflow.com/questions/54948548/…。
标签: python json formatting