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)
啊,既然您的代码已被粘贴,我可以看到根本问题确实来自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)
替换jsonify为json.dumps,并告诉我,如果这不能解决问题.
但如果您更喜欢使用flask.jsonify,那么您应该查看flask文档.参数jsonify应该与任何dict构造函数的参数相同- 即一个dict或一个可迭代的元组.这就是问题所在.