def having(self, *args): length = args.__len__() if length == 2: self.__having__ = ' having {} {} {}'.format(args[0], '=', expr.format_string(args[1])) elif length == 3: self.__having__ = ' having {} {} {}'.format(args[0], args[1], expr.format_string(args[2])) else: raise Exception('invalid parameter in having function') return self
def _compile_tuple(self, data): if data[1] in ['in', 'not in']: return self._compile_in((data[0], data[1], data[2])) elif data[1] in ['between', 'not between']: return self._compile_between((data[0], data[1], data[2])) return '{} {} {}'.format(expr.format_column(data[0], self.__model__), data[1], expr.format_string(data[2]))
def _compile_keyvalue(self, key, value): return '{}={}'.format(expr.format_column(key, self.__model__), expr.format_string(value))
def _compile_between(self, data): if not (len(data) == 3 and len(data[2]) == 2): raise Exception('between param invalid') return '{} {} {} and {}'.format( expr.format_column(data[0], self.__model__), data[1], expr.format_string(data[2][0]), expr.format_string(data[2][1]))
def _compile_dict(self, data): return [ '{}={}'.format(expr.format_column(index, self.__model__), expr.format_string(value)) for index, value in data.items() ]