2 Stimmen

Filtern nach Daten im Datenspeicher von Google App Engine

Ich habe einige Probleme, die versuchen, eine Reihe von Objekten nach ihrem Datum zu filtern. Im Moment kann ich alle Transaktionen eines Transaktionen eines Benutzers wie folgt:

> t = Transaction.all().filter("client_email =", "some_email").filter("application_id =", "foo").fetch(100)
> len(t)
# => 4

Wenn ich nun einige Datumsfilter einrichten möchte:

> min = datetime.datetime(2009, 2, 3, 0, 0)
> max = datetime.datetime(2009, 11, 4, 0, 0)

> len(Transaction.gql("WHERE client_email =:1 AND date >:2 AND date <=:3 AND application_id =:4", 
                      "some_email", min, max, "foo").fetch(100))
# => 2

Ich weiß, dass alle diese Transaktionen ein Datum < max && > min haben:

> map(lambda x: x.date, t)
# => [datetime.datetime(2009, 10, 2, 22, 43, 51), datetime.datetime(2009, 10, 5, 2, 5, 24), datetime.datetime(2009, 10, 7, 16, 51, 5), datetime.datetime(2009, 10, 7, 16, 6, 53)]

Ja, alle diese Transaktionen wurden im Oktober 2009 durchgeführt. Ich habe sie in Python gefiltert, um zu bestätigen dass es richtig war:

> trans = filter(lambda x: x.date < max and x.date >= min, t)
> len(trans)
# => 4

Also ja, sie haben alle die richtigen Daten, aber wegen etwas in meiner Abfrage stimmen die Ergebnisse nicht mit den erwarteten Ergebnisse. Haben Sie eine Idee, was in der Abfrage falsch sein könnte?

1voto

Haben Sie versucht, das Abfragedatum mit der App Engine GQL-Syntax ?. Z.B. Syntax:

DATETIME(year, month, day, hour, minute, second)
DATETIME('YYYY-MM-DD HH:MM:SS')
DATE(year, month, day)
DATE('YYYY-MM-DD')
TIME(hour, minute, second)
TIME('HH:MM:SS')

Versuchen Sie, den folgenden GQL auszuführen:

"WHERE client_email =:1 AND date > DATE(:2) AND date <= DATE(:3) AND application_id =:4", "some_email", "2009-02-03", "2009-11-04", "foo"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X