Articles of app engine ndb

¿Cómo evito que la aplicación llame a datastore_v3.next () al llamar a get_multi?

Estoy ejecutando una consulta keys_only, que obtiene 20 resultados. result_keys, cursor, more = ActivityIndex.query(cls.followers == key)\ .order(-cls.date_created)\ .fetch_page(num_results, start_cursor = cursor, keys_only=True) Luego obtengo los padres de los objetos activityIndex: keys = [] for k in result_keys: for pair in k.parent().pairs(): keys.append(ndb.Key(pairs=[pair])) activities_related = ndb.get_multi(keys) Pensé que esto sería rápido, porque estaba recibiendo un lote […]

validador para ndb.StructuredProperty repetido no se puede disparar

Aquí está mi modelo ndb from google.appengine.ext import ndb from mainsite.rainbow.models.CFCSocialUser import CFCSocialUser class CFCSocialGroup(ndb.Model): def remove_duplicate(self, value): raise Exception(“Duplicate user detected”) name = ndb.StringProperty(required=True) created_on = ndb.DateTimeProperty(auto_now_add=True) updated_on = ndb.DateTimeProperty(auto_now=True) created_by = ndb.StructuredProperty(CFCSocialUser) members = ndb.StructuredProperty(CFCSocialUser, repeated=True, validator=remove_duplicate) @staticmethod def create_group(name): “””Create a new group””” group = CFCSocialGroup(name=name) return group def add_member(self, social_user): “””Add […]

Resultados de consultas NDB que comienzan con una cadena

Al trabajar con el NDB de Google App Engine, busco consultar todos los elementos que comienzan con una cadena ingresada por el usuario. Ejemplo: abc_123 abcdefg 123abc Consultar por “abc” debería devolver abc_123, abcdefg (sin embargo, no 123abc, ya que no comienza con “abc”) Anteriormente utilicé el siguiente código para un propósito similar pero diferente: […]

¿Qué es el límite máximo de consulta de Google Appengine Ndb GQL?

Miro a mi alrededor para obtener una respuesta, ¿cuál es el límite máximo de resultados que puedo obtener de una consulta GQL en Ndb en Google AppEngine? Estoy utilizando una implementación con cursores, pero será mucho más rápido si los recupero todos a la vez.

App Engine devuelve JSON desde JsonProperty

Me gusta cómo JsonProperty codifica automáticamente una estructura de Python en JSON cuando la propiedad se coloca en el almacén de datos, y la descodifica automáticamente cuando se recupera. Sin embargo, sería bueno enviar esos datos JSON a un navegador web sin tener que codificarlos nuevamente. ¿Hay alguna forma de obtener los datos JSON sin […]

ndb y consistencia: ¿Por qué ocurre este comportamiento en una consulta sin un padre?

Estoy trabajando un poco con Python y ndb y no puedo entender por qué. Voy a publicar los casos y el código de arriba: modelos.py class Reference(ndb.Model): kind = ndb.StringProperty(required=True) created_at = ndb.DateTimeProperty(auto_now_add=True) some_id = ndb.StringProperty(indexed=True) data = ndb.JsonProperty(default={}) Esas pruebas se ejecutan en la consola interactiva y la opción – high_replication para dev_appserver.py: Prueba […]

El motor de aplicaciones NDB: cómo acceder a verbose_name de una propiedad

Supongo que tengo este código: class A(ndb.Model): prop = ndb.StringProperty(verbose_name=”Something”) m = A() m.prop = “a string value” Ahora, por supuesto, si imprimo m.prop, emitirá “un valor de cadena”, mientras que en realidad es una instancia de StringProperty. Por lo tanto, no se puede acceder a verbose_name de la forma “normal”, es decir, m.prop._verbose_name . […]

¿Qué tan eficiente es Google App Engine ndb.delete_multi ()?

Estoy trabajando en algo para borrar mi base de datos de ~ 10,000 entidades, y mi plan es ponerlo en una tarea que elimine 200 a la vez usando ndb.delete_multi() y luego se vuelva a llamar de forma recursiva hasta que no quede ninguna entidad. Por ahora, todavía no tengo la recursión, así que podría […]

¿Cómo puedo saber si ndb.Model.get_or_insert creó una nueva entidad o tiene una existente?

Para la siguiente función (rota), quiero devolver True si la entidad fue creada o actualizada, y False caso contrario. El problema es que no sé si get_or_insert() obtuvo una entidad existente o insertó una. ¿Hay una manera fácil de determinar esto? class MyModel(ndb.Model): def create_or_update(key, data): “””Returns True if entity was created or updated, False […]

Siguiendo las referencias de tipos desconocidos en NDB

Estoy en el proceso de escribir mi primer servicio web RESTful sobre GAE y el tiempo de ejecución de Python 2.7; Comencé a usar la nueva API ndb de Guido. Sin embargo, no estoy seguro de cómo resolver un caso particular sin la función de referencia inversa implícita de la API de db original. Si […]