sqlalchemy自动扩展查询或更新或插入表定义

时间:2017-05-26 18:06:17

标签: python sqlalchemy

在我的应用程序中,我有一个mixin,它定义了两个字段,如start_date和end_date。我已将此mixin添加到需要这些字段的所有表声明中。

我还定义了一个函数,它返回过滤器(条件)以测试时间戳(例如现在)为> = start_date和<结束日期。目前,每当我需要查询包含这些字段的表时,我都会手动添加这些过滤器。

但是有时我或我的同事忘记添加过滤器,我想知道是否可以在这样的表上自动扩展任何查询。像例如mixin中的一个附加函数,只要它“编译”语句,就由SQLalchemy调用。我在这里仅使用'compile'作为例子,实际上我不知道何时或如何最好地做到这一点。

知道如何实现这个目标吗?

如果它适用于SELECT,它是否也适用于INSERT和UPDATE?

非常感谢你的帮助

尔根

2 个答案:

答案 0 :(得分:0)

看看这个example。您可以更改私有方法中表示的条件,以引用您的开始和结束日期。 请注意,此查询的效率较低,因为它会覆盖get方法以绕过标识映射。 我不确定enable_assertions虚假来电是做什么的;我建议在继续之前了解这一点。

答案 1 :(得分:0)

我尝试扩展Query但很难。最后(不幸的是)我回到了我之前的小辅助函数方法,返回过滤器并将它们应用于查询。

我仍然希望如果表(Base)具有某些列,我会找到一种自动添加某些过滤器的方法。

尔根