El dia jueves tuve una grata pelea con Google App Engine, unas 4 horas dandole una leida a la información que nos brinda Developers Google, sobre la descarga de un DataStore.
Lo primero que me puse a revisar fue el panel de administración y habilitar la opción que nos permite interactuar de manejara directa con la aplicación que tengamos montada para luego acceder al Datastore Admin, se puede ver en la Imagen 1.
Imagen 1
Luego de eso tendremos acceso al panel donde podremos realizar la descarga de las entidades, eliminar, como tambien restaurar de un backup anterior.
1.- Backup Entities: Nos permite generar el backup de una entidad especifica o todo el store.
2.- Copy to Another App: Si necesitamos copiar todo las entidades o solo algunas a otra aplicación que tengamos corriendo.
3.- Import Backup Information: Importar de un backup que tengamos almacenado en el Blobstore
4.- Delete Entities: Eliminar alguna Entidad =)
Al generar el backup respectivo, es almacenado y guardado en el blobstore, cuando deseamos bajarlo para manipular lo podemos pero no se puede abrir porque esta con otro tipo de codificación del mismo modo queremos importar es necesario que tengamos activado Google Cloud Storage que a partir de este mes ya el uso del mismo es de pago.
Puesto que en la documentación nos dan la opción de poder descargar el datastore, revisando las Tools pero aquí esta el detalle tenemos la chance de hacerlo con python :) eureka asunto solucionado, el proyecto subido en el servidor fue realizado con Java :( no dan soporte pero bueno dando una pasadita y revisando si se puede activando remote_api
Ahora procedemos a configurar un archivo especificamente web.xml, agregando las siguiente lineas:
remoteapi
com.google.apphosting.utils.remoteapi.RemoteApiServlet
```Con esto nos permite hacer uso de la api remote y permitir interactuar con el servlet directamente cabe destacar que esto esta orientado cuando tu servidor esta desarrollado en Java para Python se cubre otros pasos.
la vez agregamos lo para que haga el mapeo y se pueda acceder directamente a el.
remoteapi
/remote_api
Ahora necesitamos tener el sdk de python para el GAE, procedemos a descargarlo en mi caso baje la version para [Linux](http://googleappengine.googlecode.com/files/google_appengine_1.6.6.zip) se puede hacer lo mismo tanto en [Mac OS X](http://googleappengine.googlecode.com/files/GoogleAppEngineLauncher-1.6.6.dmg) como tambien en [Windows](http://googleappengine.googlecode.com/files/GoogleAppEngine-1.6.6.msi).
Luego de tener listo el sdk y realizar esa configuración pequeña en el archivo _web.xml._ ahora procedemos a realizar el deploy respectivo, esperamos un rato que se realize y verificamos que este corriendo el servlet, accedemos de la siguiente manera [http://tuID.appspot.com/_remote\_api_](http://tuid.appspot.com/remote_api).
Algo importante que cuando tenemos activado remote api solo se puede acceder los que tengan permisos para ellos como ser el administrador o un dev como se ve en la siguiente imagen.
[![](http://4.bp.blogspot.com/-mSu1rG9SHFI/T-c538IvPdI/AAAAAAAABBc/cvhejN8kAuA/s400/remote_api.png)](http://4.bp.blogspot.com/-mSu1rG9SHFI/T-c538IvPdI/AAAAAAAABBc/cvhejN8kAuA/s1600/remote_api.png)
Ya tenemos listo ahora procedemos nos dirigimos al sdk de python que bajamos por comodida lo mande en el home renombrando el folder principal.
[![](http://4.bp.blogspot.com/-K6O2HYEw5I4/T-c-SKofHNI/AAAAAAAABBo/QBb38YRL0OM/s400/sdkGAEPython.png)](http://4.bp.blogspot.com/-K6O2HYEw5I4/T-c-SKofHNI/AAAAAAAABBo/QBb38YRL0OM/s1600/sdkGAEPython.png)
Ahora tenemos todo listo para poder conectarnos directamente con nuestro servidor y descargar el datastore, usamos el archivo appcfg.py como esta en su wiki de desarrollo procedemos a realizarlo.
python appcfg.py download_data –application=id –url=http://id.appspot.com/remote_api –filename=ElNombreDelBackup.CSV
Al mandar el comando nos dara el siguiente mensaje:
[![](http://3.bp.blogspot.com/-0-jDvW5AHp0/T-dBUixkCFI/AAAAAAAABB0/Bth7cECHqJA/s400/CONECTANDOSTORE.png)](http://3.bp.blogspot.com/-0-jDvW5AHp0/T-dBUixkCFI/AAAAAAAABB0/Bth7cECHqJA/s1600/CONECTANDOSTORE.png)
Nos pide ingresar los credenciales necesarios para poder acceder, pidiéndonos el email y password. Pero puffff error no bajo nada nos da el siguiente error:
[![](http://2.bp.blogspot.com/-J71UWHmV3Qo/T-dPheAVeLI/AAAAAAAABCI/c4__5YMNuSk/s400/error.png)](http://2.bp.blogspot.com/-J71UWHmV3Qo/T-dPheAVeLI/AAAAAAAABCI/c4__5YMNuSk/s1600/error.png)
Lo que nos indica ahora es que no hubo respuesta del store no se pudo acceder pero si nos conectamos revisamos en el folder y genero los sqlite respectivos :(.
En este punto me pase revisando y el error es que el datastore cuando se crea, tenemos dos opciones Master/Slave o High Replication, asi que de ahi viene el error cuando esta en Master/Slave no sucede este problema podemos descargarlo tranquilamente, pero como en mi caso usamos High Replication se arregla este asunto agregando un simple simbolo si este simbolo con la letra s ¬¬! ( s~ ) ← este condenado que me tuvo revisando por un tramo de tiempo quedando al final para poder realizar la descarga de la siguiente manera. en application agregamos s~ID
snifer@Snifer:~/GAE_SDK_Python$ python appcfg.py download_data –application=s~ID –url=http://ID.appspot.com/remote_api –filename=snifer.CSV
Y listo lo tenemos descargado en formato CSV, lo abrimos y arte de magia.
[![](http://1.bp.blogspot.com/-t6l5LLjsVAE/T-dTAgy8YQI/AAAAAAAABCU/4GSG9bCLJgM/s400/descargado.png)](http://1.bp.blogspot.com/-t6l5LLjsVAE/T-dTAgy8YQI/AAAAAAAABCU/4GSG9bCLJgM/s1600/descargado.png)
Asi que con esto termina la entrada y como puso al amigo @[cibercrimen](https://twitter.com/cibercrimen/status/216920010621325312/photo/1) domingo de limpieza me toca limpiar la cueva.
[![](http://4.bp.blogspot.com/-C197U1Qmm_M/T-dU77d3DhI/AAAAAAAABCc/kUHVg9FgM1E/s320/AwKnmbJCEAASkhm.jpg)](http://4.bp.blogspot.com/-C197U1Qmm_M/T-dU77d3DhI/AAAAAAAABCc/kUHVg9FgM1E/s1600/AwKnmbJCEAASkhm.jpg)
Saludos :P