avdd wrote: > On further investigation I see that this is actually per-instance > lazy, so no app-level hook will solve it. > > So somehow __setstate__ needs to re-initialise the attribute.
in addition to the compile_mappers() step, all of your mapper() calls (or declarative classes) need to have been imported into the application before any unpickling occurs. The error you see below is still symptomatic of non-compiled mappers. > > I do actually merge() the object back into the new session, and that > is where the error first occurs. My web handling machinery masked the > original traceback, which is this: > > bondi.web:500 invoke_controller > self.context.thaw(request) > bondi.app:93 thaw > self.screen.thaw() > bondi.view:153 thaw > self.model = getmeta(self.model).refresh_model(self.context, > self.model) > bondi.model:309 refresh_model > return self.do_refresh_model(context, model) > bondi.model:477 do_refresh_model > return self.getdb(context).merge(obj) > sqlalchemy.orm.session:1162 merge > return self._merge(instance, dont_load=dont_load, > _recursive=_recursive) > sqlalchemy.orm.session:1182 _merge > key = mapper._identity_key_from_state(state) > sqlalchemy.orm.mapper:1086 _identity_key_from_state > return self.identity_key_from_primary_key > (self._primary_key_from_state(state)) > sqlalchemy.orm.mapper:1097 _primary_key_from_state > return [self._get_state_attr_by_column(state, column) for column > in self.primary_key] > sqlalchemy.orm.mapper:1111 _get_state_attr_by_column > return self._get_col_to_prop(column).getattr(state, column) > sqlalchemy.orm.properties:99 getattr > return state.get_impl(self.key).get(state, state.dict) > AttributeError: 'NoneType' object has no attribute 'get' > > On Dec 17, 6:46 pm, avdd <adr...@gmail.com> wrote: >> I use pickle to serialise unsaved objects in a user session. Normally >> this works fine, except that for development I use an auto-reloading >> server, and pickling some objects is hitting a case where some lazy >> attribute isn't fully compiled. > > -- > > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalch...@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.