如何删除GAE中所有命名空间中的所有实体?

时间:2011-03-22 10:42:56

标签: python google-app-engine namespaces google-cloud-datastore

Google App Engine允许管理数据存储区 http://code.google.com/appengine/docs/adminconsole/datastoreadmin.html

但除了默认名称空间外,没有提及名称空间。

我有很多命名空间,现在我想要删除数据存储区中的所有实体/命名空间。有简单的方法吗?

1 个答案:

答案 0 :(得分:7)

不确定这是否符合简单条件,但是......

您可以使用mapper api创建将遍历整个集合的函数,并且可以通过db.GqlQuery("SELECT * FROM __namespace__")获取所有名称空间

因此,假设您具有映射所有名为each()的实体like this one的功能。您可以在任务中运行以下内容,也可以在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)
相关问题