我在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)
答案 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')
然后,迭代并删除。