Il semble qu'il n'y ait pas d'équivalent de _ah / admin de Python App Engine pour l'implémentation Java de Google App Engine.
Existe-t-il un moyen manuel de parcourir la banque de données? Où se trouvent les fichiers sur ma machine? (J'utilise le plug-in App Engine avec Eclipse sur OS X).
java
google-app-engine
google-cloud-datastore
Jim Blackler
la source
la source
Il n'y a actuellement pas de visionneuse de banque de données pour le SDK Java - il devrait y en avoir une dans la prochaine version du SDK. En attendant, votre meilleur pari est d'écrire votre propre interface d'administration avec le code de visualisation de la banque de données - ou d'attendre la prochaine version du SDK.Java App Engine dispose désormais d'un visualiseur de magasin de données local, accessible à l'adresse
http://localhost:8080/_ah/admin
.la source
J'ai une banque de données locale sur mon environnement Windows + Eclipse sur \ war \ WEB-INF \ appengine-generated \ local_db.bin
Autant que je sache, il utilise un format interne nommé "tampons de protocole". Je n'ai pas d'outils externes pour présenter le fichier dans un format lisible par l'homme.
J'utilise un code de "visionneuse" simple comme celui-ci:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); final DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); final Query query = new Query("Table/Entity Name"); //query.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.DESCENDING); for (final Entity entity : datastore.prepare(query).asIterable()) { resp.getWriter().println(entity.getKey().toString()); final Map<String, Object> properties = entity.getProperties(); final String[] propertyNames = properties.keySet().toArray( new String[properties.size()]); for(final String propertyName : propertyNames) { resp.getWriter().println("-> " + propertyName + ": " + entity.getProperty(propertyName)); } } }
la source
Dans les dernières versions du SDK ( 1.7.6+ ), la partie admin du serveur de développement est fournie avec elle a changé son emplacement
En analysant les journaux de sortie du serveur, nous pouvons voir qu'il est accessible à:
http://localhost:8000
Et le visualiseur Datastore :
http://localhost:8000/datastore
Cela a l'air assez soigné - selon les nouvelles directives de conception de Google.
la source
Étant donné que la visionneuse de magasin de données Google App Engines ne prend pas en charge l'affichage des collections d'entités référencées, j'ai modifié la version de Paul pour afficher toutes les entités descendantes:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { String entityParam = req.getParameter("e"); resp.setContentType("text/plain"); final DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); // Original query final Query queryOrig = new Query(entityParam); queryOrig.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.ASCENDING); for (final Entity entityOrig : datastore.prepare(queryOrig).asIterable()) { // Query for this entity and all its descendant entities and collections final Query query = new Query(); query.setAncestor(entityOrig.getKey()); query.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.ASCENDING); for (final Entity entity : datastore.prepare(query).asIterable()) { resp.getWriter().println(entity.getKey().toString()); // Print properties final Map<String, Object> properties = entity.getProperties(); final String[] propertyNames = properties.keySet().toArray(new String[properties.size()]); for(final String propertyName : propertyNames) { resp.getWriter().println("-> " + propertyName + ": " + entity.getProperty(propertyName)); } } } }
Il est à noter que rien n'est affiché pour les collections vides / entités référencées.
la source
Ouvrez le
\war\WEB-INF\appengine-generated\local_db.bin
fichier avec un éditeur de texte, comme Notepad ++.Les données sont brouillées mais au moins vous pouvez les lire et vous pouvez les copier pour les extraire.
la source
Pour moi, le correctif était de faire la connexion en utilisant la
gcloud
commande ci-dessousgcloud auth application-default login
la source