在Flask / SQLAlchemy / jinja中使用outerjoin引用查询结果

时间:2013-07-29 10:11:10

标签: python mysql sqlalchemy flask jinja2

我有以下查询:

last_entry = Table.query \
                  .group_by(Table.email) \
                  .order_by(Table.date) \
                  .subquery()

results = db.session.query(User, last_entry.c.id)  \
    .outerjoin(last_entry, User.email == last_entry.c.email)

这会获取所需的数据,但是我无法访问此“last_entry”行数据。如何让它在模板中显示?

我用这一行渲染它:

return render_template('users.html', users=results.all())

我尝试过使用user['last_entry']和类似事情的一些解决方案,但没有成功。我可以通过使用User表中的字段(例如user['first_name'])来访问User表中的数据,但不能对连接表执行相同的操作。

1 个答案:

答案 0 :(得分:1)

session.query()中,您应指定要在结果中看到的实体列表:

results = db.session.query(User, last_entry).outerjoin(last_entry, User.email == last_entry.c.email)

或者,您可以使用add_entity()

results = session.query(User).outerjoin(last_entry, User.email == last_entry.c.email).add_entity(last_entry)

希望有所帮助。