Remote_api Google App Engine: удаление всех данных в django nonrel - PullRequest
4 голосов
/ 24 июня 2010

Я использую django non-rel (http://www.allbuttonspressed.com/projects/django-nonrel) и пытаюсь удалить все данные в хранилище данных моего производства. Я читал заданный здесь вопрос Как удалить все хранилище данных в Google App Engine ? но ответ мне не помог.

Это потому, что я делаю это неправильно или мы используем django, где слои манипулируют данными перед их сохранением в хранилище данных?

Просто для пояснения, вот шаги, которые я предпринял, чтобы удалить все данные хранилища данных.

  1. Я зашел в папку google app engine в программных файлах

  2. В командной строке введите "remote_shell_api.py yourapp / remote_api"

  3. при успешном входе я попытался импортировать одну из папок приложения, но она не позволила мне импортировать ее, не говоря уже об ее удалении.

  4. Конечно, набрать эквивалент моего проекта тоже не удалось

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

Я также изучил выполнение шагов здесь (http://code.google.com/appengine/docs/python/tools/uploadingdata.html), но я действительно запутался. Кто-нибудь может прояснить этот процесс? Он отличается от обычных проектов движка приложения Google, если да, то как мы его используем?

Ответы [ 3 ]

3 голосов
/ 25 июня 2010

Здесь работают две проблемы:

  1. Чтобы импортировать ваши пакеты и модули, они должны быть на PYTHONPATH.Для этого запустите оболочку с установленной переменной PYTHONPATH: PYTHONPATH=path_to_your_app remote_api_shell.py yourapp.
  2. Различные патчи Django для App Engine изменяют класс Model хранилища данных, чтобы изменить имя вида для полной квалификации - например, модель«Foo», определенный в модуле «bar», в Django будет «bar_Foo», в то время как App Engine сам по себе просто называет его «Foo».Чтобы применить этот патч, вам нужно убедиться, что вы импортировали соответствующие части патча Django, чтобы позволить ему применить этот обезьяновый патч.

В связанной заметке, если у вас естьмного данных, вы можете использовать новую библиотеку mapreduce , которая полностью работает на сервере и будет работать намного быстрее.

1 голос
/ 25 июня 2010

Вы пробовали следующее?

Entry.objects.all().delete()

Entry ваша модель Джанго.

0 голосов
/ 16 июля 2010

Как оказалось, django non-rel использует свою собственную удаленную оболочку. Итак

manage.py удаленная оболочка

перенесет вас в механизм приложений, где вы сможете удалить свои данные, которые правильно отображаются в хранилище данных механизма приложений. Спасибо за помощь, ребята!

...