Mam prostą tabelę w Google App Engine z polem daty. Chcę zapytać o wszystkie wiersze z polem daty wycenionym od teraz do 6 godzin wstecz. Jak utworzyć to zapytanie?Jak wyszukiwać wszystkie wpisy z ostatnich 6 godzin (datetime) w GQL?
Odpowiedz
SELECT * FROM simpletable
WHERE datefield < DATETIME(year, month, day, hour, minute, second)
obliczanie roku, miesiąca, & c, w kodzie aplikacji.
jak masz licznik tej kwerendy? – erotsppa
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. –
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. –
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
+1 dla rozwiązania opartego na Query. –
Uratowałeś mi ogromny ból głowy, dziękuję za tonę. –
Zmień tytuł aby uczynić go bardziej przyjaznym dla Google .. – Graviton