将谓词/筛选器附加到表的所有查询

  • 本文关键字:查询 谓词 筛选 sqlalchemy
  • 更新时间 :
  • 英文 :


SQLAlchemy 是否允许我们定义表(或查询),以便将特定谓词自动附加到该表上的所有查询?查询甚至可以通过关系/关联进行。我试图避免在每个模块中的每个查询表达式中添加 filter()。

例:表 T1 有列 col1,我希望该表上的每个 sqla 查询在将 sql 提交到 db 之前自动添加一个额外的谓词 col1='Y'。

我希望涉及 t1 对象的结果查询如下所示:
选择。。从 T1 哪里...和 t1.col1='Y'
选择。。从 T2 在 T2.x=T1.x 上加入 T1,其中 ...和 t1.col1='Y'

通过在表或关系的 xml 映射中添加 WHERE="col1='Y'" 属性,这在休眠中很容易做到。(这是至少 5 年前在休眠中完成的)。

我在 SQLA 版本 0.9 中使用带有 autoload=True 的声明性基础

有两种

方法可以实现此行为:

http://www.sqlalchemy.org/trac/wiki/UsageRecipes/PreFilteredQuery

http://www.sqlalchemy.org/trac/wiki/UsageRecipes/GlobalFilter

最新更新