2009-06-15 11 views

Odpowiedz

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

obliczanie roku, miesiąca, & c, w kodzie aplikacji.

+0

jak masz licznik tej kwerendy? – erotsppa

+1

W Pythonie App Engine, robisz z tego GqlQuery i wywołujesz na nim metodę .count(); nie ma sposobu, aby zmiażdżyć LICZNIK wprost do samego GQL. –

+0

Należy zauważyć, że zliczanie jest nieefektywne - jest to O (n) z liczbą zliczonych podmiotów, aw App Engine nie może liczyć do więcej niż 1000. –

18

wiem mówisz GQL, ale tutaj jest to funkcja python pomocnik używam:

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

Nie może również być bardziej zwięzły sposób, żeby to napisać: Nie jestem ekspertem python i udał się z pierwszą Rzecz, która działała. Zapoznaj się z dokumentami datetime, jeśli ci na tym zależy. Używa się go tak:

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

Jestem pewien, że można przełożyć do GQL bez większego niepokoić, ale wolę interfejsu obiektowego, a ja nie wiem, niezbędną składnię DATETIME.

W python zapytanie jest następnie wykorzystywany tak:

# 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 dla rozwiązania opartego na Query. –

+0

Uratowałeś mi ogromny ból głowy, dziękuję za tonę. –

Powiązane problemy