Python 2.7 如何按名称查询Google App Engine实体以转换为新名称?
我想将一些实体转换为新名称。如何查询未定义模型类的实体 例如,我有这样的实体(简化为更可读): 我想将其重命名为:Python 2.7 如何按名称查询Google App Engine实体以转换为新名称?,python-2.7,google-app-engine,google-app-engine-python,Python 2.7,Google App Engine,Google App Engine Python,我想将一些实体转换为新名称。如何查询未定义模型类的实体 例如,我有这样的实体(简化为更可读): 我想将其重命名为: class SomeFile(ndb.model): name = ndb.StringProperty() 我怎么做 如果将Some重命名为SomeFile,则将不再需要查询Some,而只查询数据存储中的数据。也许我不理解您的问题,但这是您想要的吗?: for x in Some.query(): y = SomeFile() y.name = x.name
class SomeFile(ndb.model):
name = ndb.StringProperty()
我怎么做
如果将
Some
重命名为SomeFile
,则将不再需要查询Some
,而只查询数据存储中的数据。也许我不理解您的问题,但这是您想要的吗?:
for x in Some.query():
y = SomeFile()
y.name = x.name
y.put()
x.key.delete()
尽管您应该通过成批执行来提高效率。您可以通过覆盖模型的
\u get\u Kind()
方法来更改模型类名并使其指向现有的数据存储种类
class SomeFile(ndb.Model):
@classmethod
def _get_kind(cls):
return 'Some'
现在,您可以在python代码中使用SomeFile
,同时在数据存储中保留某些
实体
这是个好主意。无论我想要什么,都要更改所有名称以简化代码。我更喜欢X是X,而不是X是Y。你已经删除了旧模型的名称,这是你的选择,或者你可以临时替换旧模型,像其他答案一样进行交换。我不能工作,你假设类有些是存在的,但将被替换,有些将被删除,因为死代码。我不能维护死代码,因为它阻碍了开发。我不理解你的评论。。。如果class Some()
不存在,那么只需将其创建为Expando,这样就不需要列出属性。在转换之后,你删除这个“代码”>“类”()的简单定义(< /代码>),这样你就不会保存死区代码。它很简单,我不能有一些(NDB。model),因为这个代码必须在更新之后不被删除。——在100补丁之后,我将有50个(EpxDANO)……这就是不保存死物的问题。
class SomeFile(ndb.Model):
@classmethod
def _get_kind(cls):
return 'Some'