python词典列表

Rob*_* P. 8 python dictionary list

我有一个简单的代码,使用sqlalchemy从db获取用户并将它们作为json返回.我的问题是如何格式化输出以获得这样的东西:

{"results": [{"id":1, "username":"john"},{"id":2,"username":"doe"}]}
Run Code Online (Sandbox Code Playgroud)

我的代码输出一个错误,我似乎无法修复python中的新手:

d = []

for user in Users.query.all():
    v = {}
    for columnName in Users.__table__.columns.keys():
        v[columnName] = getattr( user, columnName )

    d.append( v )

return jsonify( d )
Run Code Online (Sandbox Code Playgroud)

代码说:

ValueError: dictionary update sequence element #0 has length 11; 2 is required
Run Code Online (Sandbox Code Playgroud)

谢谢.

Cro*_*roo 10

我简单地说,我解决了这个错误

return jsonify( results = d )
Run Code Online (Sandbox Code Playgroud)

代替

return jsonify( d )
Run Code Online (Sandbox Code Playgroud)


sen*_*rle 7

啊,既然您的代码已被粘贴,我可以看到根本问题确实来自jsonify.以下解决方法应该令人满意.

>>> import json
>>> json.dumps({"results": [{"id":1, "username":"john"},{"id":2,"username":"doe"}]})
'{"results": [{"username": "john", "id": 1}, {"username": "doe", "id": 2}]}'
Run Code Online (Sandbox Code Playgroud)

替换jsonifyjson.dumps,并告诉我,如果这不能解决问题.

但如果您更喜欢使用flask.jsonify,那么您应该查看flask文档.参数jsonify应该与任何dict构造函数的参数相同- 即一个dict或一个可迭代的元组.这就是问题所在.