def OnUniqueValues(self, event, justsample=False): """Get unique values""" vals = [] try: idx = self.list_columns.GetSelections()[0] column = self.list_columns.GetString(idx) except: self.list_values.Clear() return self.list_values.Clear() data = grass.db_select(sql="SELECT %s FROM %s" % (column, self.tablename), database=self.database, driver=self.driver, sep='{_sep_}') if not data: return desc = self.dbInfo.GetTableDesc(self.dbInfo.GetTable( self.layer))[column] i = 0 for item in sorted(set(map(lambda x: desc['ctype'](x[0]), data))): if justsample and i > 255: break if desc['type'] != 'character': item = str(item) else: item = GetUnicodeValue(item) self.list_values.Append(item) i += 1
def GetValues(self, columns=None): """Return list of values (casted to string). If columns is given (list), return only values of given columns. """ valueList = list() for labelId, ctypeId, valueId in self.widgets: column = self.FindWindowById(labelId).GetLabel() if columns is None or column in columns: value = GetUnicodeValue( self.FindWindowById(valueId).GetValue()) valueList.append(value) # add key value if self.usebox: valueList.insert(self.keyId, GetUnicodeValue(str(self.cat))) return valueList
def OnUniqueValues(self, event, justsample=False): """Get unique values""" vals = [] try: idx = self.list_columns.GetSelections()[0] column = self.list_columns.GetString(idx) except: self.list_values.Clear() return self.list_values.Clear() sql = "SELECT DISTINCT {column} FROM {table} ORDER BY {column}".format( column=column, table=self.tablename) if justsample: sql += " LIMIT {}".format(255) data = grass.db_select( sql=sql, database=self.database, driver=self.driver, sep='{_sep_}') if not data: return desc = self.dbInfo.GetTableDesc( self.dbInfo.GetTable(self.layer))[column] i = 0 items = [] for item in data: #sorted(set(map(lambda x: desc['ctype'](x[0]), data))): if desc['type'] not in ('character', 'text'): items.append(str(item[0])) else: items.append(u"'{}'".format(GetUnicodeValue(item[0]))) i += 1 self.list_values.AppendItems(items)