124 votes

Comment supprimer tous les datastores dans Google App Engine ?

Est-ce que quelqu'un sait comment supprimer tous les datastore dans Google App Engine ?

2voto

Vishwanath Points 2014

Ajout d'une réponse sur les développements récents.

Google a récemment ajouté la fonction d'administration du datastore. Vous pouvez sauvegarder, supprimer ou copier vos entités vers une autre application en utilisant cette console.

https://developers.google.com/appengine/docs/adminconsole/datastoreadmin#Deleting_Entities_in_Bulk

1voto

Dominic Points 11

Souvent, je ne veux pas supprimer tout le magasin de données, alors je retire une copie propre de /war/WEB-INF/local_db.bin du contrôle des sources. C'est peut-être juste moi, mais il semble que même avec le mode Dev arrêté, je dois physiquement supprimer le fichier avant de le retirer. Ceci sous Windows en utilisant le plugin subversion pour Eclipse.

0voto

xamde Points 363

J'étais tellement frustré par les solutions existantes pour suppression de toutes les données dans le datastore en direct que j'ai créé une petite application GAE qui peut supprimer un certain nombre de données en 30 secondes.

Comment l'installer, etc : http://code.google.com/p/xydra/wiki/GaeMyAdmin

0voto

PHPGAE Points 163

Variation de PHP :

import com.google.appengine.api.datastore.Query;
import com.google.appengine.api.datastore.DatastoreServiceFactory;

define('DATASTORE_SERVICE', DatastoreServiceFactory::getDatastoreService());

function get_all($kind) {
    $query = new Query($kind);
    $prepared = DATASTORE_SERVICE->prepare($query);
    return $prepared->asIterable();
}

function delete_all($kind, $amount = 0) {
    if ($entities = get_all($kind)) {
        $r = $t = 0;
        $delete = array();
        foreach ($entities as $entity) {
            if ($r < 500) {
                $delete[] = $entity->getKey();
            } else {
                DATASTORE_SERVICE->delete($delete);
                $delete = array();
                $r = -1;
            }
            $r++; $t++;
            if ($amount && $amount < $t) break;
        }
        if ($delete) {
            DATASTORE_SERVICE->delete($delete);
        }
    }
}

Oui, cela prendra du temps et 30 secondes est une limite. Je pense mettre un échantillon d'application ajax pour automatiser au-delà de 30 secondes.

0voto

JQuery Guru Points 2336
for amodel in db.Model.__subclasses__():
                dela=[]
                print amodel
                try:
                    m = amodel()
                    mq = m.all()
                    print mq.count()
                    for mw in mq:
                        dela.append(mw)
                    db.delete(dela)
            #~ print len(dela)

                except:
                    pass

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X