我有以下查询:
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['first_name']
)来访问用户表中的数据,但无法对连接表执行相同的操作。
最佳答案
在 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)
希望有帮助。
关于python - 在 Flask/SQLAlchemy/jinja 中使用外连接引用查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17921313/