def _execute(self, cursor, statements):
        """"
        Executes a list of statements, returning an iterator of results sets. Each 
        statement should be a tuple of (statement, params).
        """
        payload = [{'statement': s, 'parameters': p, 'resultDataContents':['rest']} for (s, p) in statements]
        http_response = self._http_req("POST", self._tx, {'statements': payload})

        if self._tx == TX_ENDPOINT:
            self._tx = http_response.getheader('Location')

        response = self._deserialize(http_response)

        self._handle_errors(response, cursor, cursor)

        return response['results'][-1]
Executes a list of statements, returning an iterator of results sets. Each 
        statement should be a tuple of (statement, params).