_instance_state = sqlalchemy.inspection.inspect(_obj)
_mapper = _instance_state.mapper
try:
dbSession.expunge(_obj)
# print "expunge | %s" % _obj
except sqlalchemy.orm.exc.UnmappedInstanceError:
# print "sqlalchemy.orm.exc.UnmappedInstanceError | %s" % _obj
pass
except sqlalchemy.exc.InvalidRequestError:
# print "sqlalchemy.exc.UnmappedInstanceError | %s" % _obj
pass
if _mapper:
# _unloaded = [(_name, _rel) for (_name, _rel) in _mapper.relationships.items() if _name in _instance_state.unloaded]
_loaded_rels = [i for i in _mapper.relationships.items() if i[0] not in _instance_state.unloaded]
for (_name, _rel) in _loaded_rels:
_loaded_rel_data = getattr(_obj, _name)
if _loaded_rel_data:
if not _rel.uselist:
_recursive_expunge(_loaded_rel_data)
else:
for _i in _loaded_rel_data:
_recursive_expunge(_i)
_recursive_expunge(obj)