Est-ce que quelqu'un sait comment supprimer tous les datastore dans Google App Engine ?
Réponses
Trop de publicités?Si vous parlez de la magasin de données en direct Ouvrez le tableau de bord de votre application (login sur appengine) puis datastore --> dataviewer, sélectionnez toutes les lignes de la table que vous voulez supprimer et cliquez sur le bouton supprimer (vous devrez faire cela pour toutes vos tables). Vous pouvez faire la même chose de manière programmatique via l'API remote_api (mais je ne l'ai jamais utilisé.)
Si vous parlez de la magasin de données de développement il vous suffit de supprimer le fichier suivant : "./WEB-INF/appengine-generated/local_db.bin" . Le fichier sera généré pour vous la prochaine fois que vous exécuterez le serveur de développement et vous aurez une base de données claire.
Veillez à nettoyer votre projet par la suite.
C'est l'un des petits pièges qui se présentent lorsque vous commencez à jouer avec le moteur d'application Google. Vous vous retrouverez à persister des objets dans le datastore, puis à changer le modèle d'objet JDO pour vos entités persistantes, et vous vous retrouverez avec des données obsolètes qui feront planter votre application.
La meilleure approche est la méthode de l'API à distance, comme le suggère Nick, qui est un spécialiste de l'API. Moteur d'application ingénieur de Google alors faites-lui confiance.
Ce n'est pas si difficile à faire, et le dernier SDK 1.2.5 fournit le fichier remote_shell_api.py. Allez donc télécharger le nouveau SDK. Puis suivez les étapes :
-
connecter le serveur distant dans votre ligne de commande :
remote_shell_api.py yourapp /remote_api
Le shell vous demandera vos informations de connexion, et si vous l'autorisez, il créera un shell Python pour vous. Vous devez configurer le gestionnaire d'url pour /remote_api dans votre app.yaml. -
récupérer les entités que vous souhaitez supprimer, le code ressemble à quelque chose comme ça :
from models import Entry query = Entry.all(keys_only=True) entries =query.fetch(1000) db.delete(entries) \# This could bulk delete 1000 entities a time
Mise à jour 2013-10-28 :
-
remote_shell_api.py
a été remplacé parremote_api_shell.py
et vous devriez vous connecter avecremote_api_shell.py -s your_app_id.appspot.com
selon la documentation . -
Il existe une nouvelle fonctionnalité expérimentale Admin Datastore Après l'avoir activé dans les paramètres de l'application, vous pouvez supprimer en bloc et sauvegarder votre base de données via l'interface web.
Le moyen le plus rapide et le plus efficace de gérer les suppressions en masse sur un stock de données est d'utiliser la nouvelle fonction de suppression des données. API de mappeur annoncé sur le dernier Google I/O .
Si votre langue de prédilection est Python vous n'avez qu'à enregistrer votre mappeur dans un fichier de type mapreduce.yaml et définissez une fonction comme ceci :
from mapreduce import operation as op
def process(entity):
yield op.db.Delete(entity)
Sur Java vous devriez jeter un coup d'œil à cet article qui suggère une fonction comme celle-ci :
@Override
public void map(Key key, Entity value, Context context) {
log.info("Adding key to deletion pool: " + key);
DatastoreMutationPool mutationPool = this.getAppEngineContext(context)
.getMutationPool();
mutationPool.delete(value.getKey());
}
EDIT :
Depuis le SDK 1.3.8, il y a une Fonction d'administration du Datastore à cette fin
Vous pouvez également effacer le datastore du serveur de développement lorsque vous exécutez le serveur :
/path/to/google_appengine/dev_appserver.py --clear_datastore myappname/
http://code.google.com/appengine/docs/python/gettingstarted/usingdatastore.html
- Réponses précédentes
- Plus de réponses