SQLCondition

class deepfos.core.SQLCondition(fields=None, value_list=None, quote_char='`', **kwargs)

SQL查询条件

记录SQL的查询条件,主要功能:

  • 输出对应的SQL查询语句

  • 进行不同条件的and运算

  • 取出部分字段条件

在这个类中,查询条件被分为两种:

1.联合查询条件
指多个字段与一个值列表的值同时对应相等。
例如有字段: f1, f2 ,值列表:

f1

f2

1

4

2

5

3

6

联合查询条件即:
(f1=1 and f2=4) or (f1=2 and f2=5) or (f1=3 and f2=6)
2.固定查询条件:
除联合查询条件外,其余查询条件均归类为固定查询条件。例如:
f1>=1, f2 in (1, 2, 3), f1!=2 等等。
参数
  • fields – 联合查询字段

  • value_list – 联合查询的值列表

  • quote_char – 转义字符

  • **kwargs – 其余关键字参数,一般用于指定固定查询条件

示例

>>> SQLCondition(fields=['a', 'b'], value_list=[[1, 4], [2, 5], [3, 6]])
(a=1 AND b=4) OR (a=2 AND b=5) OR (a=3 AND b=6)
>>> # kwargs 部分也可以提供联合查询字段。
>>> SQLCondition(a=range(1, 4), b=range(4, 7))
(a=1 AND b=4) OR (a=2 AND b=5) OR (a=3 AND b=6)
>>> # 同时,kwargs部分可以提供一些固定条件
>>> SQLCondition(a__eq=1, b__in=(1, 2), c__lt=2)
`a`=1 AND `b` IN (1, 2) AND `c`<2

警告

kwargs 部分虽然也可以提供联合查询字段, 但是仅当 fields, value_list 未提供时有效。 两者同时存在时,kwargs 的联合查询字段会被无视。

注解

固定查询条件的入参规则为 {字段名}__{条件字符}={值} 所有支持的条件字符为:

条件字符

全称

是否支持

字符串

数字,日期

eq

equal

ne

not equal

in

in

ni

not in

lt

less than

×

le

less equal

×

gt

greater than

×

ge

greater or equal

×

方法

rename_field(field_map)

重命名字段,将引起类中所有字符串缓存失效

to_pandasql()

固定查询条件 转换成符合 Dataframe.query 要求的字符串, 用于缓存查询。 联合查询条件 不在此输出。

to_sql([max_len])

将所有查询条件转化为符合sql语法的查询条件字符串。

属性

all_fields

查询条件涉及的所有字段

cond_template

当前的 联合查询条件 模板

field_set

联合查询条件 的字段

serialized

static_cond

固定查询条件 字符串