如何通过名称查询Google App Engine实体以转换为新名称?

时间:2015-08-17 09:05:27

标签: python-2.7 google-app-engine google-app-engine-python

我想将一些实体转换为新名称。如何查询没有定义模型类的实体。

例如,我有这样的实体(它被简化为更易读):

class Some(ndb.model):
  name = ndb.StringProperty()

我想将其重命名为:

class SomeFile(ndb.model):
  name = ndb.StringProperty()

我该怎么做?

如果要将Some重命名为SomeFile,则不会再查询Some,而只会查询数据存储区中的数据。

2 个答案:

答案 0 :(得分:1)

您可以更改模型类名称,并通过覆盖模型的Kind方法将其指向现有数据存储区_get_kind()

class SomeFile(ndb.Model):
    @classmethod
    def _get_kind(cls):
      return 'Some'

现在,您可以在python代码中使用SomeFile,同时在数据存储区中保留Some个实体。

https://cloud.google.com/appengine/docs/python/ndb/modelclass#introduction

答案 1 :(得分:0)

也许我不理解你的问题,但这是你想要的吗?:

for x in Some.query():
    y = SomeFile()
    y.name = x.name
    y.put()
    x.key.delete()

虽然你应该通过批量生产来提高效率。