Runs EXPLAIN on this query

        :type sql: str or None
        :param sql: The sql to run EXPLAIN on. If None is specified, the query will
            use ``self.get_sql()``

        :type sql_args: dict or None
        :param sql_args: A dictionary of the arguments to be escaped in the query. If None and
            sql is None, the query will use ``self.get_args()``

        :rtype: list of str
        :return: list of each line of output from the EXPLAIN statement

def explain(self, sql=None, sql_args=None):
        """
        Runs EXPLAIN on this query

        :type sql: str or None
        :param sql: The sql to run EXPLAIN on. If None is specified, the query will
            use ``self.get_sql()``

        :type sql_args: dict or None
        :param sql_args: A dictionary of the arguments to be escaped in the query. If None and
            sql is None, the query will use ``self.get_args()``

        :rtype: list of str
        :return: list of each line of output from the EXPLAIN statement
        """
        cursor = self.get_cursor()
        if sql is None:
            sql = self.get_sql()
            sql_args = self.get_args()
        elif sql_args is None:
            sql_args = {}

        cursor.execute('EXPLAIN {0}'.format(sql), sql_args)
        rows = self._fetch_all_as_dict(cursor)
        return rows