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)

但这会删除一切。我需要做的是通过Keyaka IDlike查询

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 回答