Projects/worblehat-old
Projects
/
worblehat-old
Archived
12
0
Fork 0
This repository has been archived on 2024-07-04. You can view files and clone it, but cannot push or open issues or pull requests.
worblehat-old/cli/util.py

110 lines
2.3 KiB
Python

db_encoding = 'utf8'
def value_to_db(value):
if type(value) == unicode:
return value.encode(db_encoding)
return value
def value_from_db(value):
if type(value) == str:
return unicode(value, db_encoding)
return value
def execute_query(cursor, query, bindings):
for (key, val) in bindings.items():
if val == None:
query = query.replace('%(' + key + ')d', 'NULL')
bindings = map_dict(value_to_db, bindings)
cursor.execute(query, bindings)
def fetchone(cursor):
return map(value_from_db, cursor.fetchone())
def fetchall(cursor):
return map(lambda row: map(value_from_db, row),
cursor.fetchall())
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 = fetchone(cursor)
if row != None:
return make_result_dict(cursor, row)
return None
def fetchall_dict(cursor):
return map(lambda r: make_result_dict(cursor, r),
fetchall(cursor))
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 map_dict(fun, d):
res = {}
for key in d:
res[key] = fun(d[key])
return res
def maptup(fun, lst):
return tuple(map(fun, lst))
def translate(value, translations):
return translations.get(value, value)
def str_or_empty(value):
if value:
return str(value)
return ''
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
def combine_dicts(*dicts):
res = {}
for d in dicts:
res.update(d)
return res