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()
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top