当前位置:  开发笔记 > 编程语言 > 正文

如何删除Google App Engine中的所有数据存储区?

如何解决《如何删除GoogleAppEngine中的所有数据存储区?》经验,为你挑选了8个好方法。

有谁知道如何删除Google App Engine中的所有数据存储区?



1> JohnIdol..:

如果您正在谈论实时数据存储,请打开应用程序的仪表板(登录appengine)然后数据存储 - > dataviewer,选择要删除的表的所有行并点击删除按钮(您必须为你的所有表格做这个).您可以通过remote_api以编程方式执行相同操作(但我从未使用过它).

如果您正在讨论开发数据存储区,则只需删除以下文件:"./ WWE-INF/appengine-Generated/local_db.bin".下次运行开发服务器时,将再次为您生成该文件,并且您将拥有一个明确的数据库.

确保事后清理项目.

这是您开始使用Google Application Engine时派上用场的小问题之一.您会发现自己将对象持久存储到数据存储区中,然后更改可持久化实体的JDO对象模型,最终使用过时的数据,这会使您的应用程序在整个地方崩溃.


dev_appserver.py有一个-c参数可以从开发数据存储中删除.
Windows中的路径在哪里?
谢谢@John:MAC OSX中的确切路径在哪里?
@ShaneBest窗口中的路径类似于./target/yourappid-1.0-SNAPSHOT/WEB-INF/appengine-generated/local_db.bin

2> 小智..:

最好的方法是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 Admin,在应用设置中启用后,您可以批量删除以及通过web ui备份数据存储.


实际上,你不需要获取.只需db.delete(Entry.all())就可以了.
您需要在500个实体集中执行此操作,否则您将获得:BadRequestError:在一次调用中无法删除超过500个实体
调用Entry.all()时至少添加'keys_only = True'.如果您不需要检查数据,则无需获取整个条目.否则你只是在浪费计算周期.

3> systempuntoo..:

在数据存储上处理批量删除的最快速有效的方法是使用最新的Google I/O上公布的新映射器API.

如果您选择的语言是Python,则只需在mapreduce.yaml文件中注册mapper 并定义如下函数:

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以来,为此目的有一个数据存储管理功能



4> Steven Almer..:

您可以在运行服务器时清除开发服务器数据存储:

/path/to/dev_appserver.py --clear_datastore=yes myapp

您也可以缩写--clear_datastore使用-c.


不确定它是否是最近的事情,但实际的语法现在是`/path/to/google_appengine/dev_appserver.py-clear_datastore yes myappname /`(注意'是')

5> Nick Johnson..:

如果您有大量数据,则需要使用脚本将其删除.但是,您可以使用remote_api以直接的方式从客户端清除数据存储区.



6> 小智..:

在这里:转到数据存储区管理员,然后选择要删除的实体类型,然后单击"删除".Mapreduce将负责删除!



7> svpino..:

您可以使用多种方法从App Engine的数据存储区中删除条目:

在此输入图像描述

    首先,想一想你是否真的需要删除条目.这很昂贵,不去除它们可能更便宜.

    您可以使用数据存储管理员手动删除所有条目.

    您可以使用远程API并以交互方式删除条目.

    您可以使用几行代码以编程方式删除条目.

    您可以使用任务队列和游标批量删除它们.

    或者你可以使用Mapreduce来获得更强大和更漂亮的东西.

以下博客文章中解释了这些方法中的每一种:http: //www.shiftedup.com/2015/03/28/how-to-bulk-delete-entries-in-app-engine-datastore

希望能帮助到你!



8> dfichter..:

执行此操作的零设置方法是向管理服务发送执行任意代码HTTP请求,您的运行应用程序已经自动执行:

import urllib
import urllib2

urllib2.urlopen('http://localhost:8080/_ah/admin/interactive/execute',
    data = urllib.urlencode({'code' : 'from google.appengine.ext import db\n' +
                                      'db.delete(db.Query())'}))

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有