Google App Engine远程API:删除django nonrel中的所有数据

时间:2010-06-24 17:19:44

标签: google-app-engine google-cloud-datastore django-nonrel

我正在使用django non-rel(http://www.allbuttonspressed.com/projects/django-nonrel)并且我正在尝试删除生产数据存储区中的所有数据。我正在阅读这里提出的问题How to delete all datastore in Google App Engine?,但答案对我不起作用。

这是因为我没有正确地执行此操作,还是因为我们正在使用django,其中图层在保存到数据存储区之前操作数据?

为了澄清,这些是我删除所有数据存储数据的步骤。

  1. 我去了程序文件中的google app engine文件夹

  2. 在命令行中输入“remote_shell_api.py yourapp / remote_api”

  3. 当我成功上网时,我尝试导入我的一个app文件夹,但它不允许我导入它,更不用说删除它了。

  4. 当然,输入我的项目等同于此也

  5. from models import Entry  
    query = Entry.all()    
    entries =query.fetch(1000)    
    db.delete(entries)
    

    我也考虑过这里的步骤(http://code.google.com/appengine/docs/python/tools/uploadingdata.html),但我真的很困惑。任何人都可以澄清这个过程吗?它与普通的谷歌应用引擎项目有什么不同,如果是这样,我们如何使用它?

3 个答案:

答案 0 :(得分:3)

这里有两个问题:

  1. 为了导入您的包和模块,它们需要在PYTHONPATH上。为此,请运行带有PYTHONPATH变量集的shell:PYTHONPATH=path_to_your_app remote_api_shell.py yourapp
  2. App Engine的各种Django补丁修改数据存储模型类以将类型名称更改为完全限定 - 例如,模块“bar”中定义的模型“Foo”将在Django中为“bar_Foo”,而App Engine它本身就称它为“Foo”。为了应用此补丁,您需要确保已导入Django补丁的相应部分以允许它应用此monkeypatch。
  3. 在相关的说明中,如果您有大量数据,则可能需要使用新的mapreduce library,它完全在服务器上运行,速度会快得多。

答案 1 :(得分:1)

您是否尝试过以下操作?

Entry.objects.all().delete()

Entry是你的Django模特。

答案 2 :(得分:-1)

事实证明,django non-rel使用自己的远程shell。所以

manage.py remote shell

将带您进入应用引擎,您可以删除正确映射到应用引擎数据存储区的数据。感谢所有帮助人员!