Duplicating non primitive mesh with Python
You can create a copy of the Mesh datablock, create a new Object, position it where ever you want and attach it to the current collection/scene like this:
Blender 2.8x
import bpy

C = bpy.context
me = C.object.data # use current object's data
me_copy = me.copy()

ob = bpy.data.objects.new(&quot;Mesh Copy&quot;, me_copy)
ob.location = (1,2,3)

# Link object to the collection in context
C.collection.objects.link(ob)

# Update the view layer
C.view_layer.update()

Blender 2.7x
import bpy

me = bpy.context.object.data # use current object's data
me_copy = me.copy()

ob = bpy.data.objects.new(&quot;Mesh Copy&quot;, me_copy)
ob.location = (1,2,3)

scene = bpy.context.scene
scene.objects.link(ob)
scene.update()

You may also duplicate the original object. If you set the new object's data attribute to the original mesh datablock (no mesh copy created), it will be a linked duplicate.