Python 模板页面中的SqlAlchemy查询

Python 模板页面中的SqlAlchemy查询,python,sqlalchemy,mako,Python,Sqlalchemy,Mako,我有这样一个问题: session.query(System).filter_by(id_system = s.id_system).join(Command).filter_by(id_command=c.id_command).first() 我希望在模板页面中执行此查询(我使用的是mako),但它不起作用: % for c in s.commands: code = session.query(System).filter.... % endfor 在页面中执行查询的最佳方式是

我有这样一个问题:

session.query(System).filter_by(id_system = s.id_system).join(Command).filter_by(id_command=c.id_command).first()
我希望在模板页面中执行此查询(我使用的是mako),但它不起作用:

% for c in s.commands:
    code = session.query(System).filter....
% endfor

在页面中执行查询的最佳方式是什么?还是不可能?

虽然可以通过将会话和其他需要的函数注入模板上下文中来实现,但这不是正确的方法。大多数情况下,数据应该在模板之外处理,然后在呈现时传递到上下文


调用此模板的render的视图/函数应进行此查询并将其传递给模板。

模板不适合执行此类操作。根据MVC(或RV as Pyramid)范式,所有业务逻辑都需要包含在控制器中

在视图函数中执行查询:

results = DBSession.query(model.Articles).all()
return dict(status=True, results=results)
或者更好地创建包含公共数据库操作的模块(然后导入函数并在视图函数中调用它),并通过

import your_project.lib.dbfunctions
results = dbfunctions.get_articles()
return dict(status=True, results=results)
然后将它们用于模板:

<div>
% for r in results:
    ${r}
% endfor
</div>

%对于结果中的r:
${r}
%结束

我希望它能帮助你。

不,这是不可能的。您必须将包含所有信息的实例传递/(返回)到mako模板。您可以在模板中解析这些信息。