GQL prueba para IntegerProperty nula
Pregunta
Estoy tratando de consultar los registros en Google App Engine donde un IntegerProperty es nulo (Ninguno). Esto es lo que he intentado sin éxito:
data = db.GqlQuery("SELECT * FROM MyModel WHERE intProp=:1",None)
Y también con una consulta:
query = db.Query(MyModel)
query = query.filter('intProp', None)
data = query.fetch(limit=100)
Cualquier ayuda sería apreciada.
class MyModel(db.Model):
intProp = db.IntegerProperty()
Solución
Su código es correcto. ¿Usted realmente tiene cualquier instancia de MyModel
con un intProp
de None
...?
Editar : por el comentario de la OP al parecer es un problema de la migración del esquema; agregó una nueva propiedad y se espera entidades existentes para hacer que aparezca (establecido en Ninguno). No es así como cambios en el esquema de trabajo GAE, por los documentos :
El almacén de datos de App Engine no lo hace requiere que todas las entidades tienen la misma conjunto de propiedades. Después de la actualización de su modelos para añadir nuevas propiedades, existente entidades seguirán existiendo sin estas propiedades. En algunos situaciones, esto está muy bien, y usted no es necesario hacer más trabajo. Cuando ¿le gustaría volver y actualización entidades existentes por lo que también tienen las nuevas propiedades? una situación sería cuando se quiere hacer una consulta basado en las nuevas propiedades. En nuestro ejemplo, con retratos, como consultas "Lo más popular" o "menos popular" no volvería imágenes existentes, debido a que no lo hacen (aún) tienen la clasificaciones de propiedades. Para solucionar este problema, vamos a que tenga que actualizar las entidades existentes en el almacén de datos.
El ensayo cito continúa mostrando una forma de hacerlo, pero es un enfoque bastante anticuada, desde tareas antes de GAE había programado, apis remotas, & c. Podemos hacerlo mejor ahora. Fan App Engine tiene un puesto que espectáculos el enfoque general (y un error que hizo durante su migración de esquema, para que otros puedan evitarlo!), y apunta a la API remota como la herramienta clave; también señala que un módulo (del proyecto de código abierto Rietveld núcleo de revisión, iniciada por Guido van Rossum, autor de Python y un factor clave en el desarrollo de App Engine) que hace la tarea de forma clara y correctamente (que tendrá que modificar el código de una poco lo que utiliza sus modelos y c en lugar de Rietveld, por supuesto).
Otros consejos
Me las arreglé para consultar las entidades con un valor NULL usando un truco como esto:
SELECT * FROM MyModel DONDE intprop <0
Naturalmente no hay garantie que tal método poseen documentos será compatible con versiones futuras.