В results
, полученном из ваших запросов, у вас есть действительные сущности.
При первой попытке, чтобы удалить сущность, вам нужно вызвать .delete()
на ключе сущности, а не на самой сущности.см. также Удаление объектов :
res.key.delete()
Аналогично, во 2-й попытке вам необходимо передать ключи сущностей, а не сущностей, в ndb.delete_multi()
, см. также Использование пакетаоперации :
ndb.delete_multi([r.key for r in results])
Но в обоих случаях более эффективно напрямую получать только ключи сущностей из запросов (на самом деле сами сущности не нужны для их удаления).Это также дешевле, так как вы будете пропускать операции чтения из хранилища данных.Ваши попытки выглядят так:
keys = myDS().query().fetch(keys_only=True)
for key in keys:
key.delete()
keys = myDS().query().fetch(keys_only=True, limit=500) # up to 500 keys at a time
ndb.delete_multi(keys)