python 根据条件匹配运算符函数

python match operator function based on condition

在使用 pypika 和运算符生成查询时,我对使用多个条件感到有点困惑。

from pypika import Field, Query

query = Query.from_('test').select('column1','column2')
query = query.where(operator.eq(Field('column1'), 12))

使用上面的代码,我可以为 equal 添加 operator.eq 条件,我们可以进行如下其他操作。

operator.lt(a, b)
operator.le(a, b)
operator.eq(a, b)
operator.ne(a, b)
operator.ge(a, b)
operator.gt(a, b)
operator.not

在我的例子中,我像

一样动态地获取操作值
Equal
NotEqual
LessThan
LessThanOrEqual
GreaterThan
GreaterThanOrEqual

如何在不添加大量 if 条件的情况下形成查询?相反,我试图找到 operator.eqoperator.le(a, b)EqualLessThanOrEqual 到函数并将它们用于 where 条件?

query = query.where(operator.eq(Field('column1'), 12))

使用 python 字典,像这样:

import operator


operations = {
    'Equal': operator.eq,
    'NotEqual': operator.ne,
    'LessThan': operator.lt,
    'LessThanOrEqual': operator.le,
    'GreaterThan': operator.gt,
    'GreaterThanOrEqual': operator.ge,
}

并像这样使用它

query = query.where(operations[key](Field('column1'), 12))

其中 key = 'LessThan' # Or NotEqual, Equal