从数据存储中删除列

时间:2012-11-26 15:10:49

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

我更新了一些模型,其中某些实例已存储在数据存储区中。我删除了一些属性 是否可以从数据存储中完全删除这些属性?
(我不是说将其设置为无)

2 个答案:

答案 0 :(得分:4)

更改模型后,添加的新行将不包含该列。现有行将继续具有该列。您应该能够使用下面给出的文章对现有数据运行更新以删除该列。

文档文章:https://developers.google.com/appengine/articles/update_schema

答案 1 :(得分:0)

@ abel的答案中的文章包含了一些重要的相邻概念,但对于如何实际删除列并不是很清楚。 (有一些高级描述,没有代码示例。)

这里的答案策略对我有用:https://stackoverflow.com/a/12701172/7470370

更完整的例子......

from google.appengine.ext import ndb

class Model_1(ndb.Model):
    propToKeep = ndb.StringProperty()
    propToDelete = ndb.StringProperty()

entities = Model_1.query().fetch() # get all records
    for entity in entities:
        if 'propToDelete' in entity._properties:
            del entity._properties['propToDelete']
            entity.put()