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)重命名字段,将引起类中所有字符串缓存失效
将 固定查询条件 转换成符合
Dataframe.query
要求的字符串, 用于缓存查询。 联合查询条件 不在此输出。to_sql
([max_len])将所有查询条件转化为符合sql语法的查询条件字符串。
属性
查询条件涉及的所有字段
当前的 联合查询条件 模板
联合查询条件 的字段
固定查询条件 字符串