模板页面中的SqlAlchemy查询

时间:2014-11-20 14:14:38

标签: 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

在页面中进行查询的最佳方法是什么?或者是不可能的?

2 个答案:

答案 0 :(得分:0)

虽然可以通过将会话和其他所需功能注入模板上下文来实现,但这不是正确的做事方式。大多数情况下,数据应在模板外部处理,然后在渲染时传递给上下文。

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

答案 1 :(得分:0)

模板不适合进行此类操作。根据MVC(或RV作为金字塔)范例,所有业务逻辑都需要包含在控制器中。

在您的视图功能中进行查询:

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>

我希望它会对你有所帮助。