【问题标题】:Convert query result to JSON将查询结果转换为 JSON
【发布时间】:2016-07-03 21:38:05
【问题描述】:

我有一个返回查询结果的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 字典,所以也许这就是问题所在。我怎样才能得到正确的输出?

【问题讨论】:

    标签: python json postgresql flask


    【解决方案1】:

    你可以使用列表推导来做你想做的事:

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

    这种理解产生了 3 个字典,每个字典都包含一个 id 元素。

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

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

    【讨论】:

    • 它给出了这个错误:ValueError: dictionary update sequence element #0 has length 1; 2 is required 你的两个答案
    • 我无法重现您的代码,但如果 Nodelist 包含带有 ["a", "b", "c"] 的列表,则以下代码将返回您想要的列表。哪个函数会引发该错误?也许jsonify 想用别的东西作为论据。
    • 我认为它与kwarg有关,因为当我使用json.dumps([{'id': i[0]} for i in cur.fetchall()])时它可以工作
    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2017-10-15
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多