Flask sqlalchemy结果到字典

Flask sqlalchemy结果到字典,flask,sqlalchemy,Flask,Sqlalchemy,我又结巴了。我有一个sqlalchemy查询 result = db.session.query(e.name.label('event_name'), u1.name.label('player1'), u2.name.label('player2'), s.when_do_they_play)\ .outerjoin(u1, u1.id == s.player1)\ .outerjoin(u2, u2.id == s.player2)\ .outerjoin(e, e.id == s.eve

我又结巴了。我有一个sqlalchemy查询

result = db.session.query(e.name.label('event_name'), u1.name.label('player1'), u2.name.label('player2'), s.when_do_they_play)\
.outerjoin(u1, u1.id == s.player1)\
.outerjoin(u2, u2.id == s.player2)\
.outerjoin(e, e.id == s.event_id).all()
这给了我以下的结果

event_name      player1     player2     when_do_they_play
event1          player1     player2     2019-08-30@21:00
event2          player2     player3     2019-08-31@21:00
我想以表格的形式展示它

    event1
player1 vs player2  2019-08-30@21:00
    event2
player2 vs player3  2019-08-31@21:00
我想把最初的结果放到字典里是个好主意

scheduled_json={}
for ldata in result:
    scheduled_json[ldata.event_name]={}
    scheduled_json[ldata.event_name]=ldata.event_name
    scheduled_json[ldata.event_name]['player1']={}
    scheduled_json[ldata.event_name]['player1']=ldata.player1
    scheduled_json[ldata.event_name]['player2']=ldata.player2
    scheduled_json[ldata.event_name]['when_do_they_play']=ldata.when_do_they_play
然后在my template.html中使用jinja2 for循环生成表,但有一些例外情况/ifs,但不是。Flask不允许我这样做,因为:

[...]
    scheduled_json[ldata.event_name]['player1']={}
TypeError: 'unicode' object does not support item assignment

很明显。所以我认为这可以在Python方面解决(使用棉花糖),或者使用一些jinja2魔法。我对这两个问题都不太了解,那么处理这个问题的最佳方法是什么呢?当然,代码示例非常受欢迎。

好的,我想出来了,现在就足够了

<ul>
{% for group in scheduled_events|groupby('event_name') %}
    <li>{{ group.grouper }}<ul>
    {% for event in group.list %}
        <li>{{ event.player1 }} {{ event.player2 }} {{ event.when_do_they_play }}</li>
    {% endfor %}</ul></li>
{% endfor %}
</ul>

scheduled\u json[ldata.event\u name]=ldata.event\u name
似乎有点奇怪。很好的解决方法Ilja,删除该行后问题也得到了修复
return jsonify(result))