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.eq
、operator.le(a, b)
和 Equal
、LessThanOrEqual
到函数并将它们用于 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
在使用 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.eq
、operator.le(a, b)
和 Equal
、LessThanOrEqual
到函数并将它们用于 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