2009-06-15 4 views

Répondre

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

calcul de ces années, mois, & c, dans votre code d'application.

+0

comment obtenez-vous un compte de cette requête? – erotsppa

+1

Dans Python App Engine, vous créez un GqlQuery et appelez la méthode .count(); il n'y a aucun moyen de faire taire le COUNT directement dans le Gql lui-même. –

+0

Et notez que le comptage est inefficace - c'est O (n) avec le nombre d'entités comptées, et dans App Engine, ne peut pas compter plus de 1000. –

18

Je sais que vous dites GQL, mais voici une fonction d'aide de python J'utilise:

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

Il peut y avoir une façon plus concise de l'écrire: Je ne suis pas un expert en python et je suis allé avec le premier chose qui a fonctionné. Jetez un oeil à la documentation datetime si vous vous en souciez. Il est utilisé comme ceci:

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

Je suis sûr que l'on peut traduire à gql sans embêtait, mais je préfère l'interface orientée objet, et je ne sais pas la syntaxe DATETIME nécessaire.

En python la requête est alors utilisée comme ceci: titre

# 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 pour la solution basée sur la requête. –

+0

Vous m'avez sauvé un énorme mal de tête, merci beaucoup. –

Questions connexes