1

谷歌应用程序引擎允许管理数据存储 http://code.google.com/appengine/docs/adminconsole/datastoreadmin.html如何删除GAE中所有名称空间中的所有实体?

但目前还没有关于命名空间的提及,除了默认的命名空间。

我有很多命名空间,现在我想删除数据存储区中的所有实体/命名空间。有没有简单的方法来做到这一点?

+1

http://code.google.com/appengine/docs/adminconsole/datastoreadmin.html#Deleting_Entities_in_Bulk当然? – 2011-03-22 12:09:39

+1

@Jakob Bowyer:“当然”是什么?默认命名空间? – rmflow 2011-03-22 12:29:18

+0

你需要做一次吗? – systempuntoout 2011-03-22 14:13:53

回答

7

不知道这是否有资格获得简单,但...

您可以使用mapper api创建将遍历整个集合的功能,你就可以用db.GqlQuery("SELECT * FROM __namespace__")

使用的所有命名空间所以假设你有一个映射你所有的实体like this one的函数叫做each()。您可以在任务中或在本地使用remote_api enabled console的帮助来运行以下内容以删除所有内容。

for namespace in each(db.GqlQuery("SELECT * FROM __namespace__")): 
    # set the namespace 
    namespace_manager.set_namespace(namespace.namespace_name) 
    # get all the kinds used in this namespace 
    for kind in each(db.GqlQuery("SELECT * FROM __kind__")): 
     # get entity 'keys only' 
     for key in each(db.GqlQuery("SELECT __key__ FROM %s" % kind.kind_name)): 
      db.delete(key) 
+1

批量删除会提高删除时间。 'db.delete(键)' – crizCraig 2011-09-28 20:29:08