2012-04-14 6 views
1

저는 파이썬에서 GAE 데이터 저장소를 사용하고 있으며 최근의 두 날짜 사이의 레코드 수를 세고 표시하려고합니다. 예를 들어 데이터 저장소에 2 분 전 ~ 3 분 전의 박자 기호가있는 레코드가 몇 개인 지 확인할 수 있습니다. 감사합니다.GAE 데이터 스토어 - 1 분전과 2 분전의 기록이 맞습니까?

#!/usr/bin/env python 

import wsgiref.handlers 
from google.appengine.ext import db 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp import template 
from datetime import datetime 

class Voice(db.Model): 
    when = db.DateTimeProperty(auto_now_add=True) 


class MyHandler(webapp.RequestHandler): 
    def get(self): 
     voices = db.GqlQuery(
      'SELECT * FROM Voice ' 
      'ORDER BY when DESC') 
     values = { 
      'voices': voices 
     } 
     self.response.out.write(template.render('main.html', values)) 
    def post(self): 
     voice = Voice() 
     voice.put() 
     self.redirect('/') 
     self.response.out.write('posted!') 

def main(): 
    app = webapp.WSGIApplication([ 
     (r'.*', MyHandler)], debug=True) 
    wsgiref.handlers.CGIHandler().run(app) 

if __name__ == "__main__": 
    main() 
+0

내가 라인을 따라 생각하고 있어요 :. Q = db.Query() 필터 ('시>'현재 날짜 - X 분) 반환 q.count을() ... – zehelvion

+0

그래 당신은에있을 것 같다 올바른 길. "> two_minutes_ago"및 "

+0

제이슨 감사합니다. 너는 완벽하게 이해했다. 이것은 우리가 지금까지 가지고있는 것입니다 : --- --- voices = db.Query (Voice) .filter (???). count(); --- --- 우리가 확신 할 수없는 것은 x 분 전에 올바른 날짜로 조건을 작성하는 방법입니다. 예를 답으로 쓸 수 있습니까? 나는 그것을 기꺼이 받아 들일 것이다. – zehelvion

답변

2
count = db.Query().filter('when >', two_minutes_ago).filter('when <', one_minute_ago).count() 

당신은 documentation의 질의에 대해 자세히 알아볼 수 있습니다.

당신은 datetime 모듈을 사용할 수 있습니다 one_minute_agotwo_minutes_ago의 값을 얻을하려면

>>> datetime.datetime.now() 
datetime.datetime(2012, 4, 14, 14, 26, 18, 343269) 
>>> datetime.datetime.now() - datetime.timedelta(minutes=1) 
datetime.datetime(2012, 4, 14, 14, 25, 49, 860390) 

이 더 잘 알고 얻을 수 있도록 파이썬 REPL에서 그것을 밖으로보십시오.

+1

two_minutes_ago 값은 어떻게 계산합니까? 나는 전에 이것을 한 적이 없으며 그것이 나를 혼란스럽게하는 부분입니까? – zehelvion

+0

해당 정보가 포함되도록 업데이트되었습니다. –

+0

고마워요! 너 정말 우리를 여기서 도왔다. 우리는 어디에서 더 많은 것을 배울 수 있습니까? – zehelvion

0

귀하의 질의에는 날짜순으로 주문을 지원하는 복합 색인이 필요합니다. 이것은 최근 업데이트가 결국 일관성이 있음을 의미합니다. 가장 최근의 업데이트는이 때문에 표시되지 않을 수 있습니다. 모든 대안에 대해 듣는 것을 좋아합니다.

+0

아니요 - 복합 인덱스가없는 단일 속성을 정렬하거나 필터링 할 수 있습니다. 결과는 궁극적으로 일관성이있을 것입니다. –

관련 문제