Подтвердить что ты не робот

Двигатель приложений: как "reset" хранилище данных?

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

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

4b9b3361

Ответ 1

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

Этот предыдущий Вопрос SO почти такой же, только для Python

Ответ 2

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

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

Прекрасно работает с java, пока не пытался с python.

++

Ответ 3

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

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

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

dev_appserver.py --clear_datastore HelloWorld/

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

Ответ 4

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

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());      
    }   
}

Ответ 5

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

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

Ответ 6

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

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

builtins:
- datastore_admin: on

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

Ответ 7

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

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

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

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

pm.deletePersistentAll(objs);

Ответ 8

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

Ответ 9

в моем случае (работая с плагином eclipse и платформой воспроизведения) мне пришлось остановить приложение, удалить файл /apps/crud -gae/tmp/datastore, а затем перезапустить приложение

это сработало для меня... работая на месте, конечно...

Ответ 10

При работе на локальном компьютере, в Windows 7, это файл\UserName\AppData\Local\Temp\dev_appserver.datastore

Ответ 11

Я использовал движок приложения с Google Coursebuilder и должен был использовать эту команду, чтобы очистить хранилище данных:

python dev_appserver.py --clear_datastore /path/to/app

Ответ 12

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

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

Ответ 14

Это не работает для меня.

У меня есть приложение GAE, в котором мне нужно записывать меня в начале.

Я удалил файл local_db.bin(у меня есть больше файлов в этой папке: datastore-indexes-auto.xml и local_search.bn). Я снова открыл свой проект и запускаю его как. Когда я запускаю свой основной .jsp, он загружает запрос из моего хранилища данных, но у меня нет данных в моем хранилище данных и спрашиваю меня о моем PMF (постоянный менеджер factory).

Должен ли я удалять больше вещей?

Точно, я пытаюсь открыть: localhost: 8888/_ah/admin/, но он не найден.

Диего.