我正在使用带有python的GAE数据存储区,我想计算并显示两个最近日期之间的记录数。例如,在数据存储区中,两分钟前和三分钟前的时间签名存在多少条记录。 谢谢。
#!/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 :(得分:2)
count = db.Query().filter('when >', two_minutes_ago).filter('when <', one_minute_ago).count()
您可以在documentation。
中详细了解有关查询的信息要获取two_minutes_ago
和one_minute_ago
的值,您可以使用datetime
模块:
>>> 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)
在Python REPL中尝试一下,以便更熟悉它。
答案 1 :(得分:0)
您的查询将需要一个复合索引来支持按日期排序。这意味着任何最近的更新最终都是一致的。由于这个原因,最新的更新可能不会显示。喜欢听到任何变通方法。