Python peewee,基于运行时间过滤查询

Python peewee,基于运行时间过滤查询,python,peewee,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

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

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

我从未使用过peewee,但如果你只是减去两个时间戳,那么你会得到一个对象。您应该能够将它与另一个timedelta对象进行比较。比如:

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

数据库中的时间戳会大于当前时间(您的选择假设的值),这似乎有点奇怪。因此,您可能希望添加时间增量,然后以相反的方式减去值(例如,如果您希望选择过去10分钟内的记录)。

我从未使用peewee,但如果您只是减去两个时间戳,然后你会得到一个物体。您应该能够将它与另一个timedelta对象进行比较。比如:

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

数据库中的时间戳会大于当前时间(您的选择所假定的时间),这似乎有点奇怪。因此,您可能希望添加时间增量,然后以相反的方式减去值(例如,如果您希望选择过去10分钟内的记录)。

这很有意义,只是peewee似乎不喜欢它:(我将在我的编辑中包含响应是的。我在第一个示例中使用了
10*60
,但在第二个示例中只是意外地使用了
60
,这是很有意义的,只是peewee似乎不喜欢它:(我将在我的编辑中包含响应是。我在第一个示例中使用了
10*60
,但在第二个示例中只是意外地使用了
60
。-修复,
ten_min_ago = datetime.datetime.now() - datetime.timedelta(seconds=10 * 60)
rs = Request.select().where(Request.TIME_STAMP > ten_min_ago)