如何在Flask中将数组数组转换为对象数组?

时间:2017-04-27 01:26:35

标签: python flask

所以我有这段代码:

@app.route("/")
def users():
    try:
        c, conn = connection()
        c.execute(''' SELECT * FROM users ''')
        rv = c.fetchall()
        return jsonify(rv)
    except Exception as e:
        return(str(e))

,输出如下:

[
  [
    1,
    "Robert Soriano",
    "sorianorobertc@gmail.com",
    24
  ],
  [
    2,
    "Charmaine Villar",
    "charmandervillar@hotmail.com\r\n",
    23
  ]
]

但是因为我正在做一个宁静的api,我希望它在像以下的对象中:

[
  {
    1,
    "Robert Soriano",
    "sorianorobertc@gmail.com",
    24
  },
  {
    2,
    "Charmaine Villar",
    "charmandervillar@hotmail.com\r\n",
    23
  }
]

我尝试过类似的事情:

try:
        c, conn = connection()
        c.execute(''' SELECT * FROM users ''')
        rv = list(c.fetchall()) #converted to list
        return jsonify(rv)
    except Exception as e:
        return(str(e))

但我仍然得到相同的输出。

我在这里遗漏了什么吗?提前致谢

1 个答案:

答案 0 :(得分:0)

我不知道你使用的db驱动程序。我用pymysql进行测试。 cursor.fetchall()及其中的元素的结果均为tuple。您可以使用collections.namedtuple为每条记录的每个元素指定字段名称。

Record = collections.namedtuple("Record", ["id", "name", "email", "age"])

result = cursor.fetchall()

records = [Record(*record)._asdict() for record in result]

有一个很棒的工具Records: SQL for Humans™可以帮到你。