Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
    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
Esempio n. 4
0
 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)