4

ローカルホストで Google App Engine を使用しています。Bookデータストアには 2000 種類のエンティティがあります。最初の 1900 (キーの範囲は 1 から 1901) を削除したいです。対話型コンソールからそれを行うにはどうすればよいですか? ndbとは対照的に使用していますdb

たぶん、ある種の範囲機能があります。

たとえば、次のことを試みますが、何も起こりません。

from myddb import Book

list= Book.gql("WHERE ID < 193")

for entity in list:
  db.delete(entity) 

編集:

@Lipis からの応答に基づいて、以下が機能しています

from myddb import Book

from google.appengine.ext import ndb

book_keys = Book.query().fetch(keys_only=True)
ndb.delete_multi(book_keys)

しかし、それはすべてを削除します。私が取り組む必要があるのは、Key別名IDのようなクエリです

book_keys = Book.query(Article._Key < 1901).fetch(keys_only=True)
4

3 に答える 3

10

以下を使用する必要がありますndb.delete_multi()

from google.appengine.ext import ndb

book_keys = Book.query().fetch(keys_only=True)
ndb.delete_multi(book_keys)

NDB クエリを調べて、他にどのようなオプションがあり、何を達成できるかを確認する必要があります。

于 2013-02-13T10:02:22.343 に答える
2

編集

以下のソリューションはテストしていませんが、テストしてお知らせください。

また、これはndbチートシートに大いに役立つはずです

q = Book.query(default_options=QueryOptions(keys_only=True))

   if Book.ID < 1901:
      ndb.delete_multi([m.key for m in q.fetch(1900)])
于 2013-02-13T08:58:27.993 に答える
1

ndb you use q = Book.query('query').fetch('number')

次に、繰り返して削除します。

于 2013-02-13T10:05:04.863 に答える