python字典列表

2024-05-19 11:31:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

谢谢。


Tags: 代码用户inidjsonfordbsqlalchemy
3条回答

我只是简单地说

return jsonify( results = d )

而不是

return jsonify( d )

你用*args调用dict(),这将把参数扩展到位置参数。这是你所看到的错误的典型原因。别说了。

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

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

json.dumps替换jsonify,如果不能解决问题,请告诉我。

但是如果您希望使用flask.jsonify,那么您应该查看flask文档。jsonify的参数应与任何dict constructor的参数相同,即dict或iterable的元组。所以这就是问题所在。

相关问题 更多 >

    热门问题