Ho una semplice tabella in Google App Engine con un campo data. Voglio interrogare tutte le righe con il campo data valutato tra ora e 6 ore fa. Come si forma questa query?Come interrogare tutte le voci delle ultime 6 ore (datetime) in GQL?
risposta
SELECT * FROM simpletable
WHERE datefield < DATETIME(year, month, day, hour, minute, second)
calcolo coloro anno, il mese, & c, nel codice dell'applicazione.
come si ottiene un conteggio di quella query? – erotsppa
In Python App Engine, si crea un GqlQuery e si chiama il metodo .count(); non c'è modo di spingere il COUNT direttamente nel Gql stesso. –
E nota che il conteggio è inefficiente - è O (n) con il numero di entità contate, e in App Engine, non può contare su più di 1000. –
So che dici GQL, ma qui è una funzione Python aiuto io uso:
import datetime
def seconds_ago(time_s):
return datetime.datetime.now() - datetime.timedelta(seconds=time_s)
Ci può anche essere un modo più conciso di scriverlo: Io non sono un esperto di pitone e sono andato con la prima cosa che ha funzionato Dai un'occhiata ai documenti datetime se ti interessa. E 'usato in questo modo:
my_query = MyTable.all().filter("date >", seconds_ago(6*60*60))
sono sicuro che può essere tradotto a GQL senza molto fastidio, ma io preferisco l'interfaccia orientata agli oggetti, e non so la sintassi DATETIME necessario.
in Python query viene quindi utilizzato in questo modo:
# 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 per la soluzione basata su query. –
Mi hai salvato un enorme mal di testa, grazie mille. –
Modifica titolo per renderlo più accogliente Google .. – Graviton