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

时间:2014-07-19 19:39:47

标签: python peewee

这是我的"请求"类/表:

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 ())

1 个答案:

答案 0 :(得分:4)

我从未使用过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分钟内选择记录。)