我有一个简单的代码,可以使用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/