如何通过键从GAE数据存储中删除多个实体

时间:2013-02-13 07:53:30

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

我在localhost上使用Google App Engine。我在数据存储区中有2000个实体Book。我想删除第一个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)

3 个答案:

答案 0 :(得分:10)

您应该使用ndb.delete_multi()

from google.appengine.ext import ndb

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

您应该通过NDB Queries查看您拥有的其他选项以及您可以实现的目标。

答案 1 :(得分:2)

修改

我没有测试下面的解决方案,但测试它并让我知道。

这也应该有助于ndb cheat sheet

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

   if Book.ID < 1901:
      ndb.delete_multi([m.key for m in q.fetch(1900)])

答案 2 :(得分:1)

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

然后,迭代并删除。