def make_result_dict(cursor, row): d = {} for i in xrange(len(row)): d[cursor.description[i][0]] = row[i] return d def fetchone_dict(cursor): row = cursor.fetchone() if row != None: return make_result_dict(cursor, row) return None def fetchall_dict(cursor): return map(lambda r: make_result_dict(cursor, r), cursor.fetchall()) def first(lst): return lst[0] def second(lst): return lst[1] def count(predicate, lst): c = 0 for elem in lst: if predicate(elem): c = c+1 return c def find(predicate, lst): for elem in lst: if predicate(elem): return elem return None def unique(lst): newlst = [] for elem in lst: if elem not in newlst: newlst.append(elem) return newlst def mapcond(fun, predicate, lst): def mapfun(x): if predicate(x): return fun(x) return x return map(mapfun, lst) def maptup(fun, lst): return tuple(map(fun, lst)) def translate(value, translations): return translations.get(value, value) def p(s): encoded = s if isinstance(s, unicode): encoded = s.encode('utf8') print encoded def cut_str(string, length, ellipsis='...'): if len(string) < length: return string return string[0:length-len(ellipsis)]+ellipsis