如何删除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管理功能

    链接地址: http://www.djcxy.com/p/57819.html

    上一篇: How to delete all datastore in Google App Engine?

    下一篇: Hierarchy Optimization on Google Appengine Datastore