예제 #1
0
    def createAttrGroup(self, attr_name, attr_values, op, cast_to=""):
        """
            attr_values(list or iterable object): list of values
        """
        group = SearchGroup("and")
        group.addGroup("%s.%s = %s" %
                       (self.getTableName(), self.name_col, dbText(attr_name)))

        sub_group = SearchGroup("or")

        attr_value = "%s.%s" % (self.getTableName(), self.value_col)

        if cast_to != "":
            attr_value = "cast(%s as %s)" % (attr_value, cast_to)
            map(
                lambda value: sub_group.addGroup("%s %s cast(%s as %s)" % (
                    attr_value, op, dbText(value), cast_to)), attr_values)
        else:
            map(
                lambda value: sub_group.addGroup("%s %s %s" % (attr_value, op,
                                                               dbText(value))),
                attr_values)

        group.addGroup(sub_group)

        return group
예제 #2
0
 def __userOwnersConditionQuery(self, owner_ids):
     cond_group = SearchGroup("or")
     map(
         lambda owner_id: cond_group.addGroup("users.owner_id=%s" % owner_id
                                              ), owner_ids)
     return "connection_log.user_id in (select user_id from users where %s)" % cond_group.getConditionalClause(
     )
예제 #3
0
 def search(self, db_name, values, op, cast_to=""):
     """
         add a condition, for "db_name op values"
         values should be iterable object
     """
     group = SearchGroup("or")
     map(
         lambda value: group.addGroup(
             self.createColGroup(db_name, value, op, cast_to)), values)
     self.addGroup(group)
예제 #4
0
 def __init__(self, table_name):
     self._root_group = SearchGroup("and")
     self.table_name = table_name