How to add mesh primitives in Blender Python using data blocks
I am not sure if there are functions which return mesh primitives as a data block in the Blender API. But you can create a Suzanne data block by using a bmesh and bmesh.ops.create_monkey(bm, matrix) which you can then convert to a mesh data block

import bpy
import bmesh

bm = bmesh.new()
bmesh.ops.create_monkey(bm)

# Create mesh data block from bmesh
mesh = bpy.data.meshes.new('Mesh')
bm.to_mesh(mesh)
bm.free()

# Create object and link object to scene
obj = bpy.data.objects.new('Object', mesh)
bpy.context.scene.objects.link(obj)
bpy.context.scene.update()