Question

Je suis en train d'interroger des documents dans Google App Engine où une IntegerProperty est nulle (Aucun). C'est ce que j'ai essayé sans succès:

data = db.GqlQuery("SELECT * FROM MyModel WHERE intProp=:1",None)

Et avec une requête:

query = db.Query(MyModel)
query = query.filter('intProp', None) 
data = query.fetch(limit=100)

Toute aide serait appréciée.

class MyModel(db.Model):
    intProp = db.IntegerProperty()
Était-ce utile?

La solution

Votre code semble correct. Avez-vous fait des cas de MyModel avec un intProp de None ...?

Modifier : par le commentaire de l'OP, il est apparemment une question de migration du schéma; il a ajouté une nouvelle propriété et attendue des entités existantes pour le faire apparaître (défini sur Aucun). Cela ne veut pas comment les changements de schéma dans le travail GAE, par les docs :

  

Le App Engine ne fonctionne pas   exiger que toutes les entités ont le même   ensemble de propriétés. Après la mise à jour de votre   modèles pour ajouter de nouvelles propriétés, existantes   entités continueront d'exister   sans ces propriétés. Dans certaines   situations, cela est bien beau, et vous   ne pas avoir besoin de faire plus de travail. Quand   voudriez-vous revenir en arrière et mise à jour   les entités existantes de sorte qu'ils ont aussi   les nouvelles propriétés? une situation de   serait quand vous voulez faire une requête   sur la base des nouvelles propriétés. Dans notre   par exemple avec des photos, des requêtes telles que   « Les plus populaires » ou « moins populaire »   ne serait pas retourner des images existantes,   parce qu'ils ne le font pas (encore) la   propriétés de notation. Pour résoudre ce problème, nous allons   mettre à jour les entités existantes   dans le magasin de données.

L'essai je cite continue en montrant une façon de le faire, mais il est une jolie approche à l'ancienne, d'avant GAE avait des tâches planifiées, apis à distance, etc.. Nous pouvons le faire mieux maintenant. App Engine Fan a une très récente post montre l'approche générale (et une erreur qu'il a commise au cours de sa propre migration de schéma, de sorte que d'autres puissent l'éviter!), et les points à la balise API distant comme l'outil clé; il souligne également un module (du projet de base-examen open source Rietveld, initiée par Guido van Rossum, auteur de Python et un rôle clé dans le développement de l'App Engine) qui fait la tâche proprement et correctement (vous aurez besoin de modifier qu'un code peu, il utilise donc vos modèles et c au lieu de Rietveld de, bien sûr).

Autres conseils

J'ai réussi à interroger les entités ayant une valeur NULL en utilisant un truc comme ceci:

SELECT * FROM MyModel OÙ intProp <0

Bien sûr il n'y a pas qu'une telle garantie méthode nondocumented sera compatible avec les versions futures.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top