Двигатель приложений: как "reset" хранилище данных?
Ну, я развиваюсь в App Engine (Java), а после множества попыток и развертываний мне нужно reset хранилище данных. В тестовую производительность добавлено множество случайных данных, и кроме того, сущности сильно изменились, поэтому мне нужно удалить все: данные, таблицы, индексы.
Как я могу это сделать?
Ответы
Ответ 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)
Ответ 13
Удаление локальных данных можно сделать, открыв http://localhost:8000/datastore
Ответ 14
Это не работает для меня.
У меня есть приложение GAE, в котором мне нужно записывать меня в начале.
Я удалил файл local_db.bin(у меня есть больше файлов в этой папке: datastore-indexes-auto.xml и local_search.bn). Я снова открыл свой проект и запускаю его как. Когда я запускаю свой основной .jsp, он загружает запрос из моего хранилища данных, но у меня нет данных в моем хранилище данных и спрашиваю меня о моем PMF (постоянный менеджер factory).
Должен ли я удалять больше вещей?
Точно, я пытаюсь открыть: localhost: 8888/_ah/admin/, но он не найден.
Диего.