Articles of app engine ndb

Cómo establecer una propiedad ndb keyProperty

Tengo algunos problemas para entender cómo funcionan las entidades y las claves en Google App Engine NDB. Tengo una entidad de post y una entidad de user . ¿Cómo configuro el user_key en post al user ? En la consola interactiva, tengo esto hasta ahora: from google.appengine.ext import ndb from app.lib.posts import Post from app.lib.users […]

ID de clave personalizada de Google App Engine NDB

Cuando creo un objeto con el método ndb, crea la clave automáticamente del tipo Key (kind, id) donde id es un número. En toda la documentación se muestra que puede usar una cadena para la identificación de la clave, pero no pude averiguar cómo hacerlo automáticamente cuando se crea un objeto. Tengo un modelo de […]

NDB no borra la memoria durante una solicitud larga

Actualmente estoy descargando un trabajo de larga duración a un TaskQueue para calcular las conexiones entre las entidades NDB en el almacén de datos. Básicamente, esta cola maneja varias listas de claves de entidad que deben estar relacionadas con otra query mediante la función node_in_connected_nodes en el nodo GetConnectedNodes : class GetConnectedNodes(object): “””Class for getting […]

Google Appengine NDB ancestro vs clave de consulta

Estoy almacenando una clave de una entidad como una propiedad de otra para relacionarla. Estamos en una etapa de refactorización en este punto del proyecto, así que estaba pensando en presentar antepasados. ¿Hay una diferencia de rendimiento entre los dos enfoques? ¿Alguna ventaja dada que pueda obtener si presentamos antepasados? class Book(ndb.Model): … class Article(ndb.Model): […]

¿Ndb.toplevel rompe transacciones?

El siguiente código funciona como se esperaba y no activa la aserción: @ndb.transactional @ndb.tasklet def Foo(): assert ndb.in_transaction() El siguiente código se rompe, desencadenando la aserción: @ndb.transactional @ndb.toplevel def Foo(): assert ndb.in_transaction() Intenté reemplazar el decorador con una llamada ndb.transaction o una llamada ndb.transaction_async, pero ninguna funcionó. ¿Hay un error con ndb.toplevel y transacciones?

¿Es mejor consultar mediante keys_only = True luego get_multi o solo una consulta completa?

Estoy usando NDB con python 2.7 con el modo seguro para subprocesos activado. Entiendo que la consulta de entidades con NDB no usa caché local o memcache, sino que va directamente al almacén de datos, a diferencia del nombre de clave. (El rest de la pregunta podría ser redundante si esta premisa no es correcta). […]

Google App Engine NDB: ¿Cómo almacenar la estructura del documento?

Desde la documentación de App Engine NDB: La API de NDB proporciona almacenamiento persistente en un almacén de datos de objetos sin esquemas. Admite el almacenamiento en caché automático, consultas sofisticadas y transacciones atómicas. NDB está bien adaptado para almacenar registros de datos estructurados. Quiero crear una estructura como la siguiente utilizando NDB, donde cada […]

db.ReferenceProperty () vs ndb.KeyProperty en App Engine

La propiedad de referencia fue muy útil para manejar las referencias entre dos módulos. Ejemplo de Fox: class UserProf(db.Model): name = db.StringProperty(required=True) class Team(db.Model): manager_name = db.ReferenceProperty(UserProf, collection_name=’teams’) name = db.StringProperty(required=True) Para obtener ‘manager_name’ con la instancia de equipo, usamos team_ins.manager_name. Para obtener “equipos” que son administrados por una instancia de usuario particular, usamos user_instance.teams […]

Cómo obtener los últimos datos en GAE Python NDB

Estoy usando GAE Python. Tengo dos entidades raíz: class X(ndb.Model): subject = ndb.StringProperty() grade = ndb.StringProperty() class Y(ndb.Model): identifier = ndb.StringProperty() name = ndb.StringProperty() school = ndb.StringProperty() year = ndb.StringProperty() result = ndb.StructuredProperty(X, repeated=True) Como Google almacena nuestros datos en varios centros de datos, es posible que no obtengamos los datos más recientes cuando hacemos […]

Google App Engine (Python): carga de un archivo (imagen)

Quiero que el usuario pueda cargar imágenes a Google App Engine. Tengo el siguiente (Python): class ImageData(ndb.Model): name = ndb.StringProperty(indexed=False) image = ndb.BlobProperty() La información es enviada por el usuario utilizando un formulario (HTML): name: image: Que luego se procesa por: class AddProduct(webapp2.RequestHandler): def post(self): imagedata = ImageData(parent=image_key(image_name)) imagedata.name = self.request.get(‘name’) imagedata.image = self.request.get(‘image’) imagedata.put() […]