将查询结果转换为JSON

时间:2016-07-03 21:38:06

标签: python json postgresql flask

我的python函数返回一个查询结果:

class Arc_Nodes_Data(Resource):
  def get(self):
        #Connect to databse
        conn = connectDB()
        cur = conn.cursor()
        #Perform query and return JSON data
        try:
          cur.execute("SELECT start_location FROM trips UNION SELECT end_location FROM trips")
        except:
          print("Error executing select")
        NodeList = list (i[0] for i in cur.fetchall())
        return jsonify ({'id':NodeList})

此函数以下列格式返回结果:

{
  "id": [
    "a",
    "b",
    "c"
  ]
}

我在上面尝试了这个功能,输出可能是这样的:

[{ 
  "id": "a"
  }, {
  "id": "b"
  }, {
  "id": "c"
}]

显然,我做错了什么。我似乎无法很好地操纵Python词典,所以也许这就是问题所在。如何获得正确的输出?

1 个答案:

答案 0 :(得分:0)

您可以使用列表推导来实现您想要的目标:

return jsonify ([{'id': x} for x in Nodelist])

这种理解使得3个词典每个都包含一个id元素。

您还可以将最后一行合并到一行:

return jsonify ([{'id': i[0]} for i in cur.fetchall()])