1

我正在将 GAE 数据存储与 python 一起使用,我想计算并显示两个最近日期之间的记录数。例如,数据存储中有多少条记录在两分钟前和三分钟前之间具有时间签名。谢谢你。

#!/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()
4

2 回答 2

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

您可以在文档中了解有关查询的更多信息。

要获取的值,two_minutes_agoone_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 中尝试一下,以更加熟悉它。

于 2012-04-14T18:22:31.427 回答
0

您的查询将需要一个复合索引来支持按日期排序。这意味着任何最近的更新都将最终保持一致。因此,最近的更新可能不会显示。喜欢听到任何解决方法。

于 2012-04-15T05:24:30.970 回答