Most often, objects breaking up is done by, when hit by something, ending the original object and replacing it with one or more rigid bodies. (ie using add object/end object actuators or the python equivalent)
Now, on to constraints. I know no way to get the constraint if it was made in the user interface. There simply doesn't seem to be a method to get constraints. But if you create the constraint from python and store it's ID's, then you can manipulate it/destroy it.
To create a constraint (this is for a wheel, free to rotate in one axis):
def joinWheel(wheel, axle):
obj1 = wheel
obj2 = axle
id1 = obj1.getPhysicsId()
id2 = obj2.getPhysicsId()
'''bge.constraints.createConstraint(physics_id_1, physics_id_2,
constraint_type,
edge_position_x, edge_position_y, edge_position_z,
edge_angle_x, edge_angle_y, edge_angle_z)'''
obj1['joint'] = bge.constraints.createConstraint(id1, id2,
bge.constraints.GENERIC_6DOF_CONSTRAINT,
0,0,0,0,0,0)
obj1['joint'].setParam(0, 0.0, 0.0) #No X translation
obj1['joint'].setParam(1, 0.0, 0.0) #No Y translation
obj1['joint'].setParam(2, 0.0, 0.0) #No Z translation
obj1['joint'].setParam(3, 0, 0) #No X Rotation
obj1['joint'].setParam(4, 0, 0) #No Y Rotation
#obj1['joint'].setParam(5, 0, 0) #Commented out so there is z rotation
And now we have a reference to the constraint stored in objs['joint'] which can be removed with:
def removeWheel(wheel):
bge.constraints.removeConstraint(wheel['joint'].getConstraintId())