python词典列表
我有一个简单的代码,可以使用sqlalchemy从db中获取用户并将其作为json返回。我的问题是如何格式化输出以获得如下内容:python词典列表,python,list,dictionary,Python,List,Dictionary,我有一个简单的代码,可以使用sqlalchemy从db中获取用户并将其作为json返回。我的问题是如何格式化输出以获得如下内容: {"results": [{"id":1, "username":"john"},{"id":2,"username":"doe"}]} 我的代码输出了一个错误,作为python新手,我似乎无法修复该错误: d = [] for user in Users.query.all(): v = {} for columnName in Users.__
{"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
谢谢。错误创建dict时,您可能会遇到此错误-请参阅
编辑:查看senderle提供的确定根本原因的答案…啊,既然您的代码已经粘贴,我可以看出根本问题确实来自
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
的参数应该与any的参数相同,即dict或元组的iterable。这就是问题所在。您正在使用*args
调用dict()
,这将把args扩展到位置参数。这是您看到的错误的典型原因。省去它。我解决了这个错误,只需说
return jsonify( results = d )
而不是
return jsonify( d )
你在哪一行得到这个错误?你能粘贴整个stacktrace吗?这不是你出错的原因,但是如果你想拥有那个数据结构,你需要将返回行更改为:return jsonify({“results”:d})Full stack trace at:Full code at:另外,你正在使用一个应该是私有的属性(
\uu table\uu
),需要使用API和一些帮助程序来获取元数据。他在某处,或者正在使用他提供的一些参数进行调用。顺便说一句,simplejson允许您使用它,以便您可以使用更复杂的对象来扩展它。很好。这背后的原因是jsonify-in-flask不会在顶层对原始数组(方括号中)进行编码。我不知道确切的原因,但这被认为是不安全的。