SQLALchemy 动态 filter_by [英] SQLALchemy dynamic filter_by

查看:18
本文介绍了SQLALchemy 动态 filter_by的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道您可以通过向 filter_by 提供 **kwargs 来为 SQLAlchemy 的查询构建动态过滤器.

I know you can build dynamic filters for queries for SQLAlchemy by supplying **kwargs to filter_by.

例如

    filters = {'id': '123456', 'amount': '232'}
    db.session.query(Transaction).filter_by(**filters)

下面是我的问题:

如果我需要通过大于"或小于"子句进行查询怎么办?例如(原始 SQL):

What if I need to query by "greater than" or "less than" clauses? For example (raw SQL):

 select * from transaction t 
 where t.amount > 10 and t.amount < 100;

推荐答案

我建议使用 filter 而不是使用 filter_by,它为您提供了更多选择.

Instead of using filter_by I would recommend using filter, it gives you a lot more options.

例如(来自手册):

db.session.query(MyClass).filter(
    MyClass.name == 'some name',
    MyClass.id > 5,
)

关于您的案例:

filters = (
    Transaction.amount > 10,
    Transaction.amount < 100,
)
db.session.query(Transaction).filter(*filters)

这篇关于SQLALchemy 动态 filter_by的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆