4

私は 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. 成功したときに、アプリ フォルダーの 1 つをインポートしようとしましたが、それをインポートすることはできず、削除することもできませんでした。

  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 アプリ エンジン プロジェクトとは違うのですか? もしそうなら、どのように使用しますか?

4

3 に答える 3

3

ここには 2 つの問題があります。

  1. パッケージとモジュールをインポートするには、それらが PYTHONPATH にある必要があります。これを行うには、PYTHONPATH 変数を設定してシェルを実行しますPYTHONPATH=path_to_your_app remote_api_shell.py yourapp
  2. App Engine 用のさまざまな Django パッチは、データストアのモデル クラスを変更して、種類名を完全修飾名に変更します。たとえば、モジュール「bar」で定義されたモデル「Foo」は、Django では「bar_Foo」になりますが、App Engine 自体は「bar_Foo」になります。 「Foo」と呼ぶだけです。このパッチを適用するには、Django パッチの適切な部分をインポートして、このモンキーパッチを適用できるようにする必要があります。

これに関連して、大量のデータがある場合は、代わりに新しいmapreduce ライブラリを使用することをお勧めします。これは完全にサーバー上で実行され、はるかに高速になります。

于 2010-06-25T10:25:03.613 に答える
1

次のことを試しましたか?

Entry.objects.all().delete()

EntryあなたのDjangoモデルです。

于 2010-06-25T10:33:40.793 に答える
-1

結局のところ、djangonon-relは独自のリモートシェルを使用しています。それで

manage.pyリモートシェル

App Engineに移動し、AppEngineのデータストアに適切にマッピングされているデータを削除できます。すべての助けてくれてありがとう!

于 2010-07-16T11:14:46.143 に答える