App Engine: как «сбросить» хранилище данных? - PullRequest
28 голосов
/ 20 июля 2009

Что ж, я разрабатываю в App Engine (Java), и после многих попыток и развертываний мне нужно сбросить хранилище данных. Для проверки производительности я добавил много случайных данных, кроме того, сущности сильно изменились, поэтому мне нужно удалить все: данные, таблицы, индексы.

Как я могу это сделать?

Ответы [ 15 ]

30 голосов
/ 19 августа 2010

Извините, что разбудил эту тему, но на всякий случай я хотел бы добавить подсказку для таких нубов, как я (наконец-то нашел ответ в документации Google):

Если вы хотите сбросить хранилище данных Local (например, во время разработки с использованием eclipse) сразу, выключите сервер, найдите файл ' local_db.bin ' в вашем проект (должен находиться в каталоге WEB-INF / appengine-generate /) и удалить его.

Отлично работает с Java, еще не пробовал с Python.

++

16 голосов
/ 20 июля 2009

В SQL нет встроенной команды, эквивалентной DROP TABLE или TRUNCATE TABLE. Вам просто нужно создать страницу «удалить все» в вашем приложении, а затем повторно вызывать эту страницу с помощью скрипта. На этой странице вы хотите удалить столько сущностей, сколько еще можете ожидать до завершения запроса. Точный код зависит от того, используете ли вы JDO / JPA или API низкого уровня. (API низкого уровня будет быстрее, потому что вы можете использовать пакетные операции.)

Этот предыдущий ТАК почти такой же вопрос, только для Python

15 голосов
/ 27 августа 2010

Очистка хранилища данных сервера разработки

Веб-сервер разработки использует локальную версию хранилища данных для тестирования вашего приложения с использованием временных файлов. Данные сохраняются до тех пор, пока существуют временные файлы, и веб-сервер не сбрасывает эти файлы, если вы не попросите об этом.

Если вы хотите, чтобы сервер разработки удалил свое хранилище данных перед запуском, используйте параметр --clear_datastore при запуске сервера:

dev_appserver.py --clear_datastore HelloWorld /

Использование хранилища данных

9 голосов
/ 20 июня 2011

Просто выполните запрос без фильтра, чтобы получить все объекты и удалить их один за другим.

import javax.servlet.http.*;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.PreparedQuery;
import com.google.appengine.api.datastore.Query;

public class MyServlet extends HttpServlet {
        public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {

        DatastoreService datastore = 
                    DatastoreServiceFactory.getDatastoreService();

    Query mydeleteq = new Query();
    PreparedQuery pq = datastore.prepare(mydeleteq);
    for (Entity result : pq.asIterable()) {
        datastore.delete(result.getKey());      
    }   
}
4 голосов
/ 08 сентября 2009

извините за опоздание, но я просто пытался сделать то же самое ...

Я вошел в свою учетную запись (appengine.google.com) и нашел возможность просмотреть хранилище данных с помощью утилиты администратора (datastore / dataviewer) ..., которая позволяет создавать / обновлять / удалять.

2 голосов
/ 20 апреля 2010

В соответствии с документацией GAE вы можете удалить несколько объектов в JDO, вызовите метод deletePersistentAll (...) из PersistenceManager с коллекцией объектов.

PersistenceManager pm = PMF.get().getPersistenceManager();

Query query = pm.newQuery("select from " + Your.class);

List<Your> objs = (List<Your>) query.execute();

pm.deletePersistentAll(objs);
2 голосов
/ 25 января 2010

Удаление всех (или части) данных вашего приложения теперь является частью консоли администратора

Чтобы включить эту функцию, просто включите следующую встроенную функцию в файл app.yaml:

builtins:
- datastore_admin: on

Добавление этих строк в app.yaml включает страницу «Администратор хранилища данных» в консоли администратора вашего приложения

1 голос
/ 05 июля 2016

Удаление локальных данных можно сделать, открыв http://localhost:8000/datastore

1 голос
/ 02 июня 2015

Если вы используете maven в своем проекте, вы можете просто выполнить «mvn clean install». Конечно, это приведет к локальному сбросу хранилища данных.

1 голос
/ 01 октября 2014

Вне контекста для java dev, но так как есть немного документации, вот как это сделать в go:

keys, _ := datastore.NewQuery("").KeysOnly().GetAll(c, nil)
datastore.DeleteMulti(c, keys)
...