oh, 0.3. well theres another question. If you just converted from SQLObject, why to SA 0.3 ? 0.4 is the currently supported version and is also vastly superior to 0.3.
On Jan 30, 2008, at 2:40 PM, jason kirtland wrote: > > On 0.3.x, use EXT_PASS rather than EXT_CONTINUE. > > Michael Bayer wrote: >> sorry, the docstring is wrong. create_instance() should return >> EXT_CONTINUE if it would like to bypass creating the instance itself. >> However, "self" here is the MapperExtension instance, not the mapped >> instance. the method is called before anything is created. >> >> if you want to populate an attribute on a newly loaded instance but >> not create it, you're better off using populate_instance(). return >> EXT_CONTINUE from that method as well. >> >> class MyExt(MapperExtension): >> def populate_instance(self, mapper, selectcontext, row, instance, >> **flags): >> if not hasattr(instance, 'mutex'): >> instance.mutex = mutex() >> return EXT CONTINUE >> >> the hasattr() is assuming you dont want to replace the mutex in the >> case of a session.refresh() or similar. >> >> On Jan 30, 2008, at 1:36 PM, Ross wrote: >> >>> Hello, >>> >>> I have recently converted a Pylons app from SQLObject to SQLAlchemy >>> 0.3.10. Conversion went quite well. >>> >>> I need to serialize access to some of my objects, so I've looked >>> into >>> extending MapperExtension as described at [1] to add a mutex on >>> load. >>> >>> First, I define an extension and instantiate it: >>> -------- >>> from sqlalchemy.orm import MapperExtension >>> import mutex >>> >>> class MutexExtension(MapperExtension): >>> def create_instance(self, mapper, selectcontext, row, class_): >>> self.mutex = mutex.mutex() >>> return None >>> >>> mutexext = MutexExtension() >>> ------- >>> >>> >>> My mapper setup looks like this: >>> >>> switch_mapper = mapper (Switch, switch_table, >>> extension=[mutexext.mutexext, sac.ext], >>> >>> properties={'ports':sqla.relation(SwitchPort)}) >>> >>> >>> When I try to fetch objects from the database, I get a exception >>> setting >>> self.entity_name: >>> >>> >>> Module sqlalchemy.orm.mapper:1485 in _instance >>> << instance = >>> self._create_instance(context.session) >>> else: >>> instance._entity_name = self.entity_name >>> if self.__should_log_debug: >>> self.__log_debug("_instance(): created new >>> instance %s identity %s" % (mapperutil.instance_str(instance), >>> %str(identitykey)))>> >>> instance._entity_name = self.entity_name >>> exceptions.AttributeError: 'NoneType' object has no attribute >>> '_entity_name' >>> >>> >>> What did I do wrong? >>> >>> Thanks, >>> Ross >>> >>> >>> >>> >>> [1] >>> http://www.sqlalchemy.org/docs/03/adv_datamapping.html#advdatamapping_extending >>> >> >> >>> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---