'Execute a query and return cursor.fetchall(). try_reconnecting, if
passed, will override self.reconnect_enabled.'

def execute(self, query, parameters=None, try_reconnecting=None):

    if self.debug:
        logging.debug('Executing    %s,    %s', query, parameters)
    try:
        results = self._backend.execute(query, parameters)
    except self._backend.OperationalError:
        if (not self._is_reconnect_enabled(try_reconnecting)):
            raise
        _log_exception('MYSQL    connection    died;    reconnecting')
        self.disconnect()
        self._connect_backend(try_reconnecting)
        results = self._backend.execute(query, parameters)
    self.rowcount = self._backend.rowcount
    return results
