Это то, что вы ищете ...
db.delete(Entry.all(keys_only=True))
Выполнение запроса только по ключам выполняется намного быстрее, чем полная выборка, и ваша квота будет иметь меньшее попадание, поскольку запросы только по ключам считаются малыми операциями.
Вот ссылка на ответ от Ника Джонсона, описывающая его далее.
Ниже представлено комплексное решение REST API для усечения таблицы ...
Я настроил REST API для обработки транзакций базы данных, где маршруты напрямую отображаются на соответствующую модель / действие. Это можно вызвать, введя правильный URL (example.com/inventory/truncate) и войдя в систему.
Вот маршрут:
Route('/inventory/truncate', DataHandler, defaults={'_model':'Inventory', '_action':'truncate'})
Вот обработчик:
class DataHandler(webapp2.RequestHandler):
@basic_auth
def delete(self, **defaults):
model = defaults.get('_model')
action = defaults.get('_action')
module = __import__('api.models', fromlist=[model])
model_instance = getattr(module, model)()
result = getattr(model_instance, action)()
Он начинается с динамической загрузки модели (т. Е. Инвентаря, найденного в api.models), затем вызывает правильный метод (Inventory.truncate ()), как указано в параметре действия.
@basic_auth - это декоратор / оболочка, которая обеспечивает аутентификацию для чувствительных операций (например, POST / DELETE). Также имеется oAuth-декоратор , если вы беспокоитесь о безопасности.
Наконец, действие называется:
def truncate(self):
db.delete(Inventory.all(keys_only=True))
Это похоже на магию, но на самом деле это очень просто. Самое приятное, что delete () можно использовать повторно для удаления одного или нескольких результатов, добавив в модель еще одно действие.