Frage
Ich versuche, Aufzeichnungen in Google App Engine abzufragen, wo ein IntegerProperty null ist (Keine). Das ist, was ich versuchte, ohne Erfolg:
data = db.GqlQuery("SELECT * FROM MyModel WHERE intProp=:1",None)
Und auch mit einer Abfrage:
query = db.Query(MyModel)
query = query.filter('intProp', None)
data = query.fetch(limit=100)
Jede mögliche Hilfe würde geschätzt.
class MyModel(db.Model):
intProp = db.IntegerProperty()
Lösung
Ihr Code sieht richtig. Haben Sie eigentlich alle Instanzen von MyModel
mit einem intProp
von None
...?
Bearbeiten : pro Kommentar des OP ist es offenbar eine Frage der Schemamigration; er hat ein neues Objekt und erwarteten Einheiten bestehenden es (auf None) angezeigt haben. Das ist nicht, wie Schemaänderungen in GAE Arbeit pro der docs :
Der App Engine-Datenspeicher nicht verlangen, dass alle Einheiten das gleiche haben Satz von Eigenschaften. Nach der Aktualisierung Ihrer Modelle neue Eigenschaften hinzufügen, bestehende Einheiten werden weiterhin bestehen ohne diese Eigenschaften. In einigen Situationen ist dies in Ordnung, und Sie braucht keine mehr Arbeit zu tun. Wann würden Sie zurück und aktualisieren hinwollen auch bestehende Einrichtungen so dass sie die neuen Eigenschaften? Eine Situation, wäre, wenn Sie eine Abfrage tun wollen basierend auf den neuen Eigenschaften. In unserer Beispiel mit Bildern, Abfragen wie „Die beliebtesten“ oder „Niedrig“ würde vorhandene Bilder nicht zurück, weil sie (noch) nicht haben, die Bewertungen Eigenschaften. Um dies zu beheben, werden wir müssen die bestehenden Einrichtungen aktualisieren im Datenspeicher.
Der Essay Ich zitiere weiter durch zeigen einen Weg, es zu tun, aber es ist ein ziemlich altmodischer Ansatz, aus der Zeit vor GAE geplanten Aufgaben hatten, entfernten apis, & c. Wir können es jetzt besser machen. App Engine Fan hat eine sehr neue Post , das zeigt, der allgemeine Ansatz (und ein Fehler, den er während seiner eigenen Schema Migration gemacht, so dass andere es vermeiden!), und verweist auf die Remote API als Schlüsselwerkzeug; Er weist auch href="http://code.google.com/p/rietveld/source/browse/trunk/update_entities.py?spec=svn427&r=427" rel="nofollow noreferrer"> ein Modul zum (von dem Rietveld Open-Source-Kern-Review-Projekt, initiiert von Guido van Rossum, Autor von Python und Schlüssel in der Entwicklung der App Engine), die die Aufgabe ordentlich und richtig funktioniert (Sie müssen diesen Code eines zwicken wenig so verwendet es Ihre Modelle und Computer statt Rietveld, natürlich).
Andere Tipps
I verwalteten Einheiten mit einem NULL-Wert abfragen einen Trick wie folgt aus:
SELECT * FROM MyModel WHERE intprop <0
Natürlich gibt es keine Garantie, dass eine solche nondocumented Methode wird mit zukünftigen Versionen kompatibel sein.