2009-06-15 1 views

Antwort

13
SELECT * FROM simpletable 
WHERE datefield < DATETIME(year, month, day, hour, minute, second) 

Berechnung diejenigen Jahr, Monat, & c, im Anwendungscode.

+0

wie Sie eine Zählung dieser Abfrage erhalten:

In Python wird die Abfrage dann wie folgt verwendet? – erotsppa

+1

In der Python App Engine machst du eine GqlQuery daraus und rufst dort die .count() Methode auf; Es gibt keine Möglichkeit, den COUNT direkt in den Gql zu gleiten. –

+0

Und beachten Sie, dass das Zählen ist ineffizient - es ist O (n) mit der Anzahl der gezählten Einheiten, und in App Engine kann nicht auf mehr als 1000. –

18

Ich weiß, Sie sagen GQL, aber hier ist eine Python-Hilfsfunktion verwende ich:

import datetime 
def seconds_ago(time_s): 
    return datetime.datetime.now() - datetime.timedelta(seconds=time_s) 

Es auch ein prägnanter Weise sein kann, es zu schreiben: Ich bin nicht ein Python-Experte und ging mit dem ersten was funktioniert hat. Sehen Sie sich die datetime docs an, wenn Sie interessiert sind. Es wird wie folgt verwendet:

my_query = MyTable.all().filter("date >", seconds_ago(6*60*60)) 

Ich bin sicher, dass übersetzt werden kann, um GQL ohne viel Mühe, aber ich ziehe die objektorientierte Schnittstelle, und ich weiß nicht, die notwendige DATETIME- Syntax.

# get a count 
my_query.count() 
# get up to 1000 records 
my_query.fetch(1000) 
# iterate over up to 1000 records 
for result in my_query: 
    # do something with result 
+0

+1 für auf Abfrage basierende Lösung. –

+0

Sie haben mir eine Menge Kopfschmerzen erspart, vielen Dank. –

Verwandte Themen