Flask sqlalchemy结果到字典
我又结巴了。我有一个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
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))