[Grok-dev] Pickling an object stored in the Zodb. How do I skip the __parent__ attribute?

Gary Poster gary at modernsongs.com
Thu Aug 14 12:32:16 EDT 2008


Hey Sebastian.  http://pypi.python.org/pypi/zc.copy has a pluggable  
pickler that might do exactly what you want, even in one of the built- 
in variations.

Gary

On Aug 14, 2008, at 10:13 AM, Sebastian Ware wrote:

> Thanks for the pointer! I have read:
>
> http://www.python.org/dev/peps/pep-0307/
>
> And found that the pickling is done by calling the method you refered
> to:
>
> __getstate__()
>
> and that it really does exist on the objects in the Zodb. I will
> override the method by means of an adapter for the root object that I
> am pickling and remove the attribute [__parent__]. Feels as though
> this might actually work :)
>
> Mvh Sebastian
>
> 14 aug 2008 kl. 15.11 skrev Jegenye 2001 Bt (Miklós Prisznyák):
>
>>
>>
>> 2008/8/14 Sebastian Ware <sebastian at urbantalk.se>
>> I am trying to export and import objects from the Zodb using
>> cPickle.dumps().
>>
>> My problem is that the pickler traverses the __parent__ attribute  
>> thus
>> returning a much larger object graph than I wish to serialize.
>>
>> Do I have to subclass the pickler or is there som other smart way of
>> making it skip the __parent__ attribute?
>>
>>
>> You could  write an adapter  (or modify the class of the content
>> objects itself) to use __setstate__ and __getstate__ , etc:
>>
>> http://www.python.org/doc/2.5/lib/node321.html
>>
>> -- 
>> Best regards,
>> Miklós
>>
>> _______________________________________________
>> Grok-dev mailing list
>> Grok-dev at zope.org
>> http://mail.zope.org/mailman/listinfo/grok-dev
>
> _______________________________________________
> Grok-dev mailing list
> Grok-dev at zope.org
> http://mail.zope.org/mailman/listinfo/grok-dev



More information about the Grok-dev mailing list