在Google App Engine中使用Python复制数据存储中的实体,而不需要在“编译”时知道属性名称。

2 浏览
0 Comments

在Google App Engine中使用Python复制数据存储中的实体,而不需要在“编译”时知道属性名称。

在我正在编写的Python Google App Engine应用程序中,我有一个存储在数据存储中的实体,我需要检索它,制作一个完全相同的副本(除了键),然后将这个实体放回去。

我应该如何做到这一点?特别是,在执行此操作时,是否有任何注意事项或技巧需要注意,以便获得我期望的副本而不是其他内容。

更新:好吧,我试了一下,确实遇到了问题。我希望在编写代码时不必知道属性的名称来制作副本。我的想法是这样的:

#theThing = 从模型Thing中检索到的特定实体
copyThing = Thing(user = user)
for thingProperty in theThing.properties():
    copyThing.__setattr__(thingProperty[0], thingProperty[1])

这段代码执行时没有任何错误...直到我尝试从数据存储中检索copyThing时,我发现所有的属性都被设置为None(除了user和key,显然)。所以显然这段代码在做一些事情,因为它将默认值替换为None(所有属性都有设置默认值),但不是我想要的结果。有什么建议吗?

0