如何从本地 Google App-engine 数据存储中删除所有实体?

Posted

技术标签:

【中文标题】如何从本地 Google App-engine 数据存储中删除所有实体?【英文标题】:How do I delete all entities from my local Google App-engine datastore? 【发布时间】:2010-11-03 21:05:30 【问题描述】:

如何删除所有实体或重置我的 dev_appserver 上的本地数据存储?我在测试时不小心递归调用了一个函数来创建一个实体。

我正在使用带有 Python 的 Vista 上的 Google App-engine SDK。

【问题讨论】:

【参考方案1】:
dev_appserver.py --clear_datastore=yes myapp

请参阅here 了解更多信息。

简写版:

dev_appserver.py -c

【讨论】:

哇,确实看过了。谢谢 如果您使用的是 App Engine 启动器,您可以通过转到编辑 > 应用程序设置将标志放在“额外命令行标志”字段中来执行相同操作 这似乎已经过时或什么...我尝试使用它时出错 那没用,但这确实 dev_appserver.py [app directory] ​​--clear_datastore true 任何关于为什么这样做有效的见解,而删除整个“目标”目录却没有?数据存储到底存储在哪里?【参考方案2】:

一个有用的做法是始终指定 --datastore_path,例如--datastore_path=test.datastore.

要删除它,您只需删除该文件即可。您还可以保留副本并将它们换入和换出。并且商店将在重新启动后持续存在(当 /tmp/ 无论如何它在 Linux 上的默认位置被清除时)

【讨论】:

【参考方案3】:

在生产中,这也可能派上用场(或成为安全噩梦)。

# will DELETE the database use http://localhost:8083/deletemodels?force=true
class DeleteModels(webapp.RequestHandler):
    def get(self):

    def dMsg(msg):
      self.response.out.write(msg + '\n')
    n = self.request.get('force')
    if n:
      dMsg('clearing YourModelHere data....')
      for uc in YourModelHere.all():
               uc.delete()
               dMsg('.')
      dMsg('clearing YouNextModelHere data....')           
      for uc in YouNextModelHere.all():
               uc.delete()
               dMsg('.')     

【讨论】:

在生产环境中,您也可以从提交删除任务的数据存储区管理员中执行此操作。【参考方案4】:

在生产中 - 你可以去 appengine 仪表板 => 数据存储区管理员

【讨论】:

【参考方案5】:

如果您来这里是为了 Java 解决方案:删除以下文件:

project root/WEB-INF/appengine-generated/local_db.bin

重建并重新启动您的项目。

【讨论】:

项目中找不到这个目录 我在out/artifacts/xxxx_war_exploded/WEB-INF/appengine-generated 中找到了这样的文件,但该文件看起来非常小——它可能只是某种索引,真实数据(blob?)可能存储在其他地方。我必须重新启动服务器才能完成删除。【参考方案6】:

dev_appserver.py [应用目录] --clear_datastore true

如果服务器当时正在运行,则需要关闭服务器以释放端口

【讨论】:

【参考方案7】:

这是我运行 dev_appserver 后的输出

INFO     2017-03-21 15:07:36,085 devappserver2.py:764] Skipping SDK update check.
INFO     2017-03-21 15:07:38,342 api_server.py:268] Starting API server at: http://localhost:63970
INFO     2017-03-21 15:07:38,349 dispatcher.py:199] Starting module "default" running at: http://localhost:8080
INFO     2017-03-21 15:07:38,373 admin_server.py:116] Starting admin server at:

所以我转到http://localhost:8000,我可以转到我的本地 App Engine 管理控制台并编辑/删除数据存储区实体。

【讨论】:

以上是关于如何从本地 Google App-engine 数据存储中删除所有实体?的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 的 Google App-Engine 中使用 RPC 代理类多次写入(实体)

HTTP ERROR: 503 当我在本地运行 app-engine

是否可以在没有 OAuth2 身份验证对话框的情况下从 Google App-Engine (python) 连接和查询 BigQuery 表?

app-engine iOS 推送通知异常:“指定的队列未知”

从 app-Engine 上的 java 类向 Android 客户端发送 PUSH 通知

App-Engine (Java) 文件上传