def data_like(name, q, table=None): name = _postgresql_quote(name) q = ".*%s." % q if table: return R("((%s.data -> " % (table) + name + ") ~ %s)", q) else: return R("((data -> " + name + ") ~ %s)", q)
def data_value_in(name, values, data=True): name = _postgresql_quote(name) if data: return R("data -> " + name + " " "IN (" + ', '.join('%s' for c in range(len(values))) + ")", *values) else: return R(name + " " "IN (" + ', '.join('%s' for c in range(len(values))) + ")", *values)
def group_by(cls, fields, fields_group_by): assert isinstance(fields, list) assert isinstance(fields_group_by, list) select_fields = [] for field in fields: if isinstance(field, basestring): select_fields.append(R("t1.data -> %s" % _postgresql_quote(field), field)) else: select_fields.append(field) for field in fields_group_by: if isinstance(field, basestring): select_fields.append(R("t1.data -> %s" % _postgresql_quote(field), field)) else: select_fields.append(field) query = cls.select(select_fields) for field in fields_group_by: query = query.group_by(field) return query
def postgresql(self, key): vallist = ', '.join(htables._postgresql_quote(v) for v in self.values) return "data -> %s IN (%s)" % (htables._postgresql_quote(key), vallist)