如何删除GAE中所有命名空间的所有实体?
Google App Engine 让你可以管理 Datastore(数据存储),你可以在这里找到相关的管理控制台:http://code.google.com/appengine/docs/adminconsole/datastoreadmin.html
不过,除了默认的命名空间外,那里没有提到其他命名空间的内容。
我有很多命名空间,现在我想删除 Datastore 中的所有实体和命名空间。有没有简单的方法可以做到这一点呢?
1 个回答
7
不确定这是否算简单,不过...
你可以使用mapper api来创建一些函数,这些函数可以遍历整个集合,同时你可以通过db.GqlQuery("SELECT * FROM __namespace__")
来获取所有使用的命名空间。
假设你有一个用于遍历所有实体的函数像这个,叫做each()
。你可以在任务中或者在本地使用启用了remote_api的控制台来运行以下代码,以删除所有内容。
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)