def _save_impl(self, instance, **kwargs): if hasattr(instance, '_instance_key'): raise exceptions.InvalidRequestError("Instance '%s' is already persistent" % mapperutil.instance_str(instance)) else: # TODO: consolidate the steps here attributes.manage(instance) instance._entity_name = kwargs.get('entity_name', None) self._attach(instance) self.uow.register_new(instance)
class User(object): pass class Address(object): pass if manage_attributes: attributes.register_attribute(User, 'id', False, False) attributes.register_attribute(User, 'name', False, False) attributes.register_attribute(User, 'addresses', True, False, trackparent=True) attributes.register_attribute(Address, 'email', False, False) now = time.time() for i in range(0,130): u = User() if init_attributes: attributes.manage(u) u.id = i u.name = "user " + str(i) if not manage_attributes: u.addresses = [] for j in range(0,200): a = Address() if init_attributes: attributes.manage(a) a.email = '*****@*****.**' u.addresses.append(a) # print len(managed_attributes) # managed_attributes.clear() total = time.time() - now print "Total time", total
# with this test, run top. make sure the Python process doenst grow in size arbitrarily. class User(object): pass class Address(object): pass attributes.register_attribute(User, 'id', False, False) attributes.register_attribute(User, 'name', False, False) attributes.register_attribute(User, 'addresses', True, False) attributes.register_attribute(Address, 'email', False, False) attributes.register_attribute(Address, 'user', False, False) for i in xrange(1000): for j in xrange(1000): u = User() attributes.manage(u) u.name = str(random.randint(0, 100000000)) for k in xrange(10): a = Address() a.email_address = str(random.randint(0, 100000000)) attributes.manage(a) u.addresses.append(a) a.user = u print "clearing" #managed_attributes.clear() gc_collect()