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()
War es hilfreich?

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.

scroll top