Как удалить все сущности во всех пространствах имен в GAE? - PullRequest
1 голос
/ 22 марта 2011

Google App Engine позволяет администрировать хранилище данных http://code.google.com/appengine/docs/adminconsole/datastoreadmin.html

но нет никаких упоминаний о пространствах имен, кроме пространства имен по умолчанию.

У меня много пространств имен, и теперь я хочу удалить все сущности / пространства имен в хранилище данных. Есть ли простой способ сделать это?

1 Ответ

7 голосов
/ 22 марта 2011

Не уверен, подходит ли это для простого, но ...

Вы можете использовать mapper api для создания функций, которые будут перебирать целые коллекции, и вы можете получить всепространства имен, используемые через db.GqlQuery("SELECT * FROM __namespace__")

Итак, если у вас есть функция для отображения всех ваших сущностей , как эта , называемая each().Вы можете выполнить следующее в задаче или локально с помощью консоли с поддержкой remote_api, чтобы удалить все.

for namespace in each(db.GqlQuery("SELECT * FROM __namespace__")):
    # set the namespace
    namespace_manager.set_namespace( namespace.namespace_name )
    # get all the kinds used in this namespace
    for kind in each(db.GqlQuery("SELECT * FROM __kind__")):
        # get entity 'keys only'
        for key in each(db.GqlQuery("SELECT __key__ FROM %s" % kind.kind_name)):
            db.delete(key)
...