Ejemplo n.º 1
0
 def build_condition(filter_type: str, column: Column, value):
     if filter_type == "like":
         if not isinstance(value, list):
             value = [value]
         response = [column.like(f"%{single_value}%") for single_value in value]
     else:
         if not isinstance(value, list):
             value = [value]
         response = [column.in_(value)]
     return response
Ejemplo n.º 2
0
def _apply_text_filter(query: Select,
                       args: dict,
                       column: Column) -> Select:
    """
    If a value has been specified by the ['search']['value'] parameter from
    a DataTable AJAX request, this adds "column LIKE %['search']['value']%"
    to the WHERE clause of the given query.

    :param query: the DataTable SQL query
    :param args: the query parameters from a DataTable AJAX request
    :param column: the column to be filtered
    :return: the query with the filter (if it exists) applied
    """
    search_value = args['search']['value']
    if search_value:
        query = query.where(
            column.like('%{}%'.format(search_value))
        )
    return query
Ejemplo n.º 3
0
def get_bool_operation(model_property: Column, operator: str,
                       value: Any) -> Union[bool, ClauseElement]:
    if operator == "_eq":
        return model_property == value

    if operator == "_in":
        return model_property.in_(value)

    if operator == "_is_null":
        return model_property.is_(None)

    if operator == "_like":
        return model_property.like(value)

    if operator == "_neq":
        return model_property != value

    if operator == "_nin":
        return model_property.notin_(value)

    if operator == "_nlike":
        return model_property.notlike(value)

    if operator == "_lt":
        return model_property < value

    if operator == "_gt":
        return model_property > value

    if operator == "_lte":
        return model_property <= value

    if operator == "_gte":
        return model_property >= value

    raise Exception("Invalid operator")
Ejemplo n.º 4
0
    from ordereddict import OrderedDict

#数据库已创建表,select * from pg_statio_user_tables

SessionMaker = sessionmaker()

_sql_rl = _sql_relate = {'and': and_, 'or': or_}
_exp_where_op = {
    '=': Column.__eq__,
    '>': Column.__gt__,
    '<': Column.__lt__,
    '>=': Column.__ge__,
    '!=': Column.__ne__,
    '<>': Column.__ne__,
    'like': Column.like,
    'not like': lambda *fvs: not_(Column.like(*fvs)),
    'in': Column.in_,
    'is': Column.__eq__,
    'is not': Column.__ne__,
    '<=': Column.__le__,
    'not is': Column.__ne__
}

_orm_where_op = {
    '=': iattr.__eq__,
    '>': iattr.__gt__,
    '<': iattr.__lt__,
    '>=': iattr.__ge__,
    '!=': iattr.__ne__,
    '<>': iattr.__ne__,
    'like': iattr.like,
Ejemplo n.º 5
0
from decimal import Decimal
from .record import Record,RecordSet,QueryValue
from datetime import datetime

try:
    from collections import OrderedDict
except:
    from ordereddict import OrderedDict
    
#数据库已创建表,select * from pg_statio_user_tables


SessionMaker=sessionmaker()

_sql_rl=_sql_relate={'and':and_,'or':or_}
_exp_where_op={'=':Column.__eq__,'>':Column.__gt__,'<':Column.__lt__,'>=':Column.__ge__,'!=':Column.__ne__,'<>':Column.__ne__,'like':Column.like,'not like':lambda *fvs:not_(Column.like(*fvs)),'in':Column.in_,'is':Column.__eq__,'is not':Column.__ne__,'<=':Column.__le__,'not is':Column.__ne__}

_orm_where_op={'=':iattr.__eq__,'>':iattr.__gt__,'<':iattr.__lt__,'>=':iattr.__ge__,'!=':iattr.__ne__,'<>':iattr.__ne__,'like':iattr.like,'not like':lambda *fvs:not_(iattr.like(*fvs)),'in':iattr.in_,'is':iattr.__eq__,'is not':iattr.__ne__,'not is':iattr.__ne__,'<=':iattr.__le__}

ENGINE_STRING='%(dialect)s+%(driver)s://%(user)s:%(password)s@%(host)s/%(dbname)s?%(paras)s'

_n1='eq,ne,gt,ge,lt,le,nu,nn,in,ni'.split(',')
_o1='=,<>,>,>=,<,<=,is null,not is null,is not null,in,not in'.split(',')
_n2='bw,bn,ew,en,cn,nc'.split(',')
_o2='like,not like,like,not like,like,not like'.split(',')
_v2='%s%%,%s%%,%%%s,%%%s,%%%s%%,%%%s%%'.split(',')

_op1=dict(zip(_n1,_o1))
_op2=dict(zip(_n2,zip(_o2,_v2)))

def sql_filter(field_filter):