我有一个简单的代码,可以使用sqlalchemy从数据库获取用户,并将其作为json返回。我的问题是如何格式化输出以获取如下内容:

{"results": [{"id":1, "username":"john"},{"id":2,"username":"doe"}]}

我的代码输出了一个错误,我似乎无法解决在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 )

该代码说:
ValueError: dictionary update sequence element #0 has length 11; 2 is required

谢谢。

最佳答案

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

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

jsonify替换json.dumps,让我知道这是否不能解决问题。

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

关于python字典列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6179939/

10-12 15:01