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 behaviour of raising an exception).
        Additionally every row returned by this class is addressable
        by column name besides the column position in the query.

def fetchone(self):
        """
        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 behaviour of raising an exception).
        Additionally every row returned by this class is addressable
        by column name besides the column position in the query.
        """
        try:
            result = self.__dbapi2_cursor.fetchone()
        except Exception, e:
            self.__connection.reconnect(None, self.__log_reconnect)
            self.__dbapi2_cursor = self.__connection._get_raw_cursor()

            result = self.__dbapi2_cursor.fetchone()

        if not result:
            return result
        else:
            return self.row(self.__col2idx_map, result)