如何删除Google App Engine中的所有数据存储?
有谁知道如何删除Google App Engine中的所有数据存储?
如果您正在讨论实时数据存储 ,请打开您的应用程序的仪表板(在appengine上登录),然后选择数据存储 - > dataviewer,选择要删除的表的所有行并点击删除按钮(您必须对所有表格执行此操作)。 您可以通过remote_api以编程方式执行相同的操作(但我从未使用它)。
如果您正在讨论开发数据存储 ,则只需删除以下文件: “./WEB-INF/appengine-generated/local_db.bin” 。 该文件将在您下次运行开发服务器时再次为您生成,并且您将拥有一个清晰的数据库。
确保事后清理你的项目。
当您开始使用Google应用程序引擎时,这是一个小问题。 您会发现自己将对象保存到数据存储中,然后更改您的可持久实体的JDO对象模型,最终导致您的应用在整个位置崩溃。
最好的方法是Nick提出的远程API方法,他是Google的App Engine工程师,非常信任他。
这并不难,最新的1.2.5 SDK提供了remote_shell_api.py。 所以去下载新的SDK。 然后按照下面的步骤
在你的命令行中连接远程服务器: remote_shell_api.py yourapp /remote_api
shell会询问你的登录信息,如果授权的话,会为你制作一个Python shell。 您需要在app.yaml中为/ remote_api设置url处理程序
获取您想要删除的实体,代码如下所示:
from models import Entry
query = Entry.all(keys_only=True)
entries =query.fetch(1000)
db.delete(entries)
# This could bulk delete 1000 entities a time
更新2013-10-28 :
根据文档, remote_shell_api.py
已被remote_api_shell.py
取代,您应该连接remote_api_shell.py -s your_app_id.appspot.com
。
数据存储管理有一个新的实验功能,在应用程序设置中启用后,您可以批量删除以及通过网络用户界面备份数据存储。
Datastore上处理批量删除的最快和最有效的方式是使用最新Google I / O上宣布的新映射器API。
如果您选择的语言是Python,您只需在mapreduce.yaml文件中注册您的映射器并定义如下的函数:
from mapreduce import operation as op
def process(entity):
yield op.db.Delete(entity)
在Java上,你应该看看这篇文章,它暗示了一个这样的功能:
@Override
public void map(Key key, Entity value, Context context) {
log.info("Adding key to deletion pool: " + key);
DatastoreMutationPool mutationPool = this.getAppEngineContext(context)
.getMutationPool();
mutationPool.delete(value.getKey());
}
编辑:
自SDK 1.3.8开始,为此就有一个Datastore管理功能