我正在使用sqlalchemy查询MySql数据库的内存日志。我正在使用:
session.query(Memory).filter(Memmory.timestamp.between(from_date, to_date))
,但使用时间窗后的结果仍然太多。
现在我想查询时间窗口内的结果,但通过要求每X分钟/小时记录一次的条目并跳过其间的条目来过滤,但无法找到简单的方法来实现。
为了更详细地说明,假设"l"是给定时间窗口内查询的所有结果:
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
为了稀释它们,我正在寻找一个查询,每隔X分钟/小时只返回'l',这样我就不会不知所措:
l......l......l.....l......l......l......l.....l.....l.....l.
我可以获取所有内容,然后编写一个函数来完成这些工作,但这首先违背了避免结果阻塞的目的。
旁注:更糟糕的是,我可以在跳过预定义的行数后请求一行,在行id列上使用mod。但是最好避免这种情况,因为有一个时间戳(sqlalchemy的DateTime类型)。
编辑:在时间戳上使用group by
可能会有一些值,然后以某种方式从每个组中选择一行,但仍然不确定如何使用sqlalchemy以有用的方式做到这一点。
如果我理解正确的话,from_date和to_date只是日期。如果您将它们设置为python datetime对象,其中包含您想要的结果之间的日期/时间,则应该可以工作。