sql result as utf-8

This commit is contained in:
Nabin Hait 2012-06-11 17:44:13 +05:30
parent 48570f4b8a
commit e741aa829a

View file

@ -98,7 +98,7 @@ class Database:
webnotes.msgprint('A very long query was encountered. If you are trying to import data, please do so using smaller files')
raise Exception, 'Bad Query!!! Too many writes'
def fetch_as_dict(self, formatted=0):
def fetch_as_dict(self, formatted=0, as_utf8=0):
"""
Internal - get results as dictionary
"""
@ -107,7 +107,10 @@ class Database:
for r in result:
dict = {}
for i in range(len(r)):
dict[self._cursor.description[i][0]] = self.convert_to_simple_type(r[i], formatted)
val = self.convert_to_simple_type(r[i], formatted)
if as_utf8 and type(val) is unicode:
val = val.encode('utf-8')
dict[self._cursor.description[i][0]] = val
ret.append(dict)
return ret
@ -146,11 +149,11 @@ class Database:
# scrub output if required
if as_dict:
return self.fetch_as_dict(formatted)
return self.fetch_as_dict(formatted, as_utf8)
elif as_list:
return self.convert_to_lists(self._cursor.fetchall(), formatted)
return self.convert_to_lists(self._cursor.fetchall(), formatted, as_utf8)
elif as_utf8:
return self.convert_to_utf8(self._cursor.fetchall(), formatted)
return self.convert_to_lists(self._cursor.fetchall(), formatted, as_utf8)
else:
return self._cursor.fetchall()
@ -199,7 +202,7 @@ class Database:
# ======================================================================================
def convert_to_lists(self, res, formatted=0):
def convert_to_lists(self, res, formatted=0, as_utf8=0):
"""
Convert the given result set to a list of lists (with cleaned up dates and decimals)
"""
@ -207,7 +210,10 @@ class Database:
for r in res:
nr = []
for c in r:
nr.append(self.convert_to_simple_type(c, formatted))
val = self.convert_to_simple_type(c, formatted)
if as_utf8 and type(val) is unicode:
val = val.encode('utf-8')
nr.append(val)
nres.append(nr)
return nres