繁体   English   中英

Python peewee,根据经过的时间过滤查询

[英]Python peewee, filtering query based on elapsed time

这是我的“请求”类/表:

class Request(BaseModel):
    TIME_STAMP = DateTimeField(default=datetime.datetime.now)
    MESSAGE_ID = IntegerField()

对于peewee,我想从表中选择过去10分钟内发生的所有“请求”。 像这样:

rs = Request.select().where(Request.TIME_STAMP-datetime.datetime.now<(10 minutes))

但是,我不确定如何在TIME_STAMP和当前时间之间取得分钟数。

编辑:我尝试了Gerrat的建议,但Peewee似乎哭了:

/usr/local/lib/python2.7/dist-packages/peewee.py:2356: Warning: Truncated incorrect DOUBLE value: '2014-07-19 15:51:24'
  cursor.execute(sql, params or ())
/usr/local/lib/python2.7/dist-packages/peewee.py:2356: Warning: Truncated incorrect DOUBLE value: '0 0:10:0'
  cursor.execute(sql, params or ())

我从未使用过peewee,但是如果您只减去两个时间戳,那么您将获得一个datetime.timedelta对象。 然后,您应该可以将其与另一个timedelta对象进行比较。 就像是:

rs = Request.select().where(Request.TIME_STAMP-datetime.datetime.now() 
                            <(datetime.timedelta(seconds=10*60)))

编辑 ...靠近peewee,上面的效果可能不起作用。 如果没有,则应如下所示:

ten_min_ago = datetime.datetime.now() - datetime.timedelta(seconds=10 * 60)
rs = Request.select().where(Request.TIME_STAMP > ten_min_ago)

数据库中的时间戳大于当前时间(选择所假设的时间)似乎有点奇怪...因此,您可能想要添加时间增量并以相反的方式减去值(例如,如果要选择最近10分钟内的记录)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM