如何在SQLAlchemy查询中撤消过滤条件? E.g。
q = Model.query.filter(Model.age > 25)
q = q.remove_filter(Model.age) # what is this called?
答案 0 :(得分:2)
除了其他建议之外,简单(但如果它实际上很简单取决于您的具体情况)解决方案可能就是不应用您不需要的过滤器。
很可能你有一些复杂的代码有条件地应用过滤器,然后你想要撤消一些过滤器。 在这种情况下,您可以将所需的过滤器收集到某个集合中,而不是将所有过滤器应用于查询,例如字典或列表。
然后,您从字典中删除不需要的过滤器,然后将这些收集的过滤器实际应用于查询对象。
答案 1 :(得分:-1)
我不相信这个功能目前存在。话虽这么说,您可以通过直接访问BinaryExpression对象的q.whereclause.clauses
列表来查看(并删除)where子句(过滤器)。
如果那是你唯一的过滤器,那么这样的东西就可以了:
q.whereclause.clauses.pop()
但如果你想删除许多特定的过滤器,它会变得有点棘手(而且更黑客)。