[Zope-dev] serialization with Ape

Shane Hathaway shane@zope.com
Wed, 11 Jun 2003 10:53:01 -0400


Christian Scholz wrote:
> I actually now have a (as it seems) working version of my first
> approach, just using _setObject() etc. which even works recursively.
> Has this some drawbacks except it looks a bit like a hack due to the
> call of commit()?
> I also have the deserialization working and basically it's just a 
> copying between two ZODBs I'd say.

This will work if you duplicate the objects first.  apelib.zodb3.utils 
has a copyOf() function that reliably duplicates ZODB objects.

Doing it this way uses the whole ZODB machinery to import/export. 
There's nothing wrong with that other than it being a lot of extra work.

>>>Unfortunately this results in an exception 
>>>
>>>    Type: MappingError
>>>    Error Value: Path keychains require a name
>>>
>>>So can maybe somebody point me to the easiest way to serialize an object
>>>using the fsmapper (Shane? ;-) ?
>>
>>You're on the right track.  I wonder what went wrong.
> 
> 
> I looked into that a bit and in core/io.py line 316 you do
> 
>    return kgen.makeKeychain(event, None, 1)
> 
> so name is None here as it seems. I just dunno if it's a special case
> because I was doing something wrong or not ;-)

It's intentional, but perhaps it needs to explain itself better.  It's 
trying to figure out what OID to assign an object and there isn't enough 
information available.

>>>(and the best would be of course some simple methods for reading/writing
>>>a whole directory recursively. I don't know if something like this is already
>>>in there somehow or how it works internally.. seems all a bit magic to me ;-)
>>
>>Again, ExportImport is designed to do this.
> 
> 
> Will it also do it recursively? I found out that when I do it via
> folder._setObject() it will also serialize all content which is quite
> nice :)

Yes, it's recursive.

> What is actually the result of an export? Where in the fs is it stored then?
> Is the whole path to the object in ZODB is taken ?

I don't know where it would try to export--I haven't thought about that 
yet. ;-)

> But thanks for the answer and thanks for Ape! :)

You're welcome!

Shane