code: def fetchall(self):
          
          try:
              allrows = self.__dbapi2_cursor.fetchall()
          except Exception, e:
              self.__connection.reconnect(None, self.__log_reconnect)
              self.__dbapi2_cursor = self.__connection._get_raw_cursor()
  
              allrows = self.__dbapi2_cursor.fetchall()
  
          if not allrows:
              return allrows
          else:
              return [self.row(self.__col2idx_map, dbapi2_row) for dbapi2_row in allrows]
docs: As in DBAPI2.0 (except the fact rows are not tuples but
          lists so if you try to modify them, you will succeed instead of
          the correct behavior that would be that an exception would have
          been raised)
          Additionally every row returned by this class is addressable
          by column name besides the column position in the query.