ndb how google engine deploy create app python google-app-engine google-cloud-datastore

python - how - AppEngine: consultar el almacén de datos para los registros con<valor faltante>



ndb put (2)

De acuerdo con la documentación de App Engine sobre Consultas e Índices , hay una distinción entre entidades que no tienen ningún valor para una propiedad y aquellas que tienen un valor nulo para ella; y "Las entidades sin una propiedad filtrada nunca son devueltas por una consulta". Por lo tanto, no es posible escribir una consulta para estos registros antiguos.

Un artículo útil es Actualizar el esquema de su modelo , que dice que la única forma actualmente admitida de encontrar entidades que carecen de alguna propiedad es examinarlas todas. El artículo tiene un código de ejemplo que muestra cómo recorrer un gran conjunto de entidades y actualizarlas.

Creé una nueva propiedad para mi modelo db en el almacén de datos de Google App Engine.

Antiguo:

class Logo(db.Model): name = db.StringProperty() image = db.BlobProperty()

Nuevo:

class Logo(db.Model): name = db.StringProperty() image = db.BlobProperty() is_approved = db.BooleanProperty(default=False)

¿Cómo consultar los registros del logotipo, que no tienen establecido el valor ''is_approved''? Lo intenté

logos.filter("is_approved = ", None)

pero no funcionó. En el Visor de datos, los nuevos valores de campo se muestran como.


Tal vez esto haya cambiado, pero puedo filtrar registros basados ​​en campos nulos .

Cuando intento la consulta GQL SELECT * FROM Contact WHERE demo=NULL , solo devuelve registros para los que falta el campo de demostración.

De acuerdo con el documento http://code.google.com/appengine/docs/python/datastore/gqlreference.html :

El lado derecho de una comparación puede ser uno de los siguientes (según corresponda para el tipo de datos de la propiedad): [...] un literal booleano, como VERDADERO o FALSO; el literal NULL , que representa el valor nulo (None en Python).

Sin embargo, no estoy seguro de que "nulo" sea ​​lo mismo que "faltante" : en mi caso, estos campos ya existían en mi modelo pero no se habían rellenado en la creación. ¿Quizás Federico podría decirnos si la consulta NULL funciona en su caso específico?