0

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

from pypika import Field, Query

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

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

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调节?LessThanOrEqualwhere

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

1 回答 1

2

使用 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

于 2020-04-13T19:16:33.103 回答