Executes the inputted command into the current \
        connection cursor.

        :param      command    | <str>
                    data       | <dict> || None
                    autoCommit | <bool> | commit database changes immediately
                    autoClose  | <bool> | closes connections immediately
                    returning  | <bool>
                    mapper     | <variant>
                    retries    | <int>

        :return     [{<str> key: <variant>, ..}, ..], <int> rowcount

def execute(self,
                command,
                data=None,
                returning=True,
                mapper=dict,
                writeAccess=False,
                dryRun=False,
                locale=None):
        """
        Executes the inputted command into the current \
        connection cursor.

        :param      command    | <str>
                    data       | <dict> || None
                    autoCommit | <bool> | commit database changes immediately
                    autoClose  | <bool> | closes connections immediately
                    returning  | <bool>
                    mapper     | <variant>
                    retries    | <int>

        :return     [{<str> key: <variant>, ..}, ..], <int> rowcount
        """
        command = command.strip()

        if not command:
            raise orb.errors.EmptyCommand()
        elif dryRun:
            print command % data
            raise orb.errors.DryRun()

        # define properties for execution
        data = data or {}
        command = command.strip()
        data.setdefault('locale', locale or orb.Context().locale)
        start = datetime.datetime.now()

        try:
            with self.native(writeAccess=writeAccess) as conn:
                results, rowcount = self._execute(conn,
                                                  command,
                                                  data,
                                                  returning,
                                                  mapper)

        # always raise interruption errors as these need to be handled
        # from a thread properly
        except orb.errors.Interruption:
            delta = datetime.datetime.now() - start
            log.critical('Query took: %s' % delta)
            raise

        # handle any known a database errors with feedback information
        except orb.errors.DatabaseError as err:
            delta = datetime.datetime.now() - start
            log.error(u'{0}: \n {1}'.format(err, command))
            log.error('Query took: %s' % delta)
            raise

        # always raise any unknown issues for the developer
        except StandardError as err:
            delta = datetime.datetime.now() - start
            log.error(u'{0}: \n {1}'.format(err, command))
            log.error('Query took: %s' % delta)
            raise

        delta = (datetime.datetime.now() - start).total_seconds()
        if delta * 1000 < 3000:
            lvl = logging.DEBUG
        elif delta * 1000 < 6000:
            lvl = logging.WARNING
        else:
            lvl = logging.CRITICAL

        log.log(lvl, 'Query took: %s' % delta)

        return results, rowcount