Copy an entity in Google App Engine datastore in Python without knowing property names at 'compile'

Posted by Gordon Worley on Stack Overflow See other posts from Stack Overflow or by Gordon Worley
Published on 2010-04-22T01:44:21Z Indexed on 2010/04/23 20:23 UTC
Read the original article Hit count: 334

In a Python Google App Engine app I'm writing, I have an entity stored in the datastore that I need to retrieve, make an exact copy of it (with the exception of the key), and then put this entity back in.

How should I do this? In particular, are there any caveats or tricks I need to be aware of when doing this so that I get a copy of the sort I expect and not something else.

ETA: Well, I tried it out and I did run into problems. I would like to make my copy in such a way that I don't have to know the names of the properties when I write the code. My thinking was to do this:

#theThing = a particular entity we pull from the datastore with model Thing
copyThing = Thing(user = user)
for thingProperty in theThing.properties():
    copyThing.__setattr__(thingProperty[0], thingProperty[1])

This executes without any errors... until I try to pull copyThing from the datastore, at which point I discover that all of the properties are set to None (with the exception of the user and key, obviously). So clearly this code is doing something, since it's replacing the defaults with None (all of the properties have a default value set), but not at all what I want. Suggestions?

© Stack Overflow or respective owner

Related posts about google-app-engine

Related posts about python