Transform matrix on a scaled object
You are applying transformation at object level with bpy.ops.transform.resize() and on data level with myObj.data.transform(). The data transform is directly applied to vertices. The vertices' position simply is updated and the transformation is lost. When applying the transformation to the object the matrix is stored (if possible) in the translation, rotation and scale properties of the object. The object transform is applied on the vertex positions. In your case this results in objMatrix @ dataMatrix or scaleMatrix @ locrotMatrix.

You want to swap that order. I would advise you to either apply the transformation to the object or the data.

You can construct the final matrix separately first.

import bpy
from mathutils import Matrix

mat_rot = Matrix([[1,  0,     0,     0],
                  [0,  0.707, 0.707, 0],
                  [0, -0.707, 0.707, 0],
                  [1,  0,     0,     1]])

mat_scale = Matrix([[1, 0, 0, 0],
                    [0, 2, 0, 0],
                    [0, 0, 3, 0],
                    [0, 0, 0, 1]])

mat = mat_rot @ mat_scale


If you want to apply this matrix at the object level, use object.matrix_world. 

bpy.ops.mesh.primitive_cube_add()
myObj = bpy.context.object
myObj.matrix_world = mat


If you want to apply this matrix at the data level, use data.transform().

bpy.ops.mesh.primitive_cube_add()
myObj = bpy.context.object
myObj.data.transform(mat)


From the comments: If you don't import your matrix, but are constructing them from scratch, use the Helper constructors from the Matrix class, such as Matrix.Diagonal or Matrix.Rotation