我正在使用 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
可能有一些值(value)在时间戳上,然后以某种方式从每个组中选择一行,但仍然不确定如何使用 sqlalchemy 以有用的方式执行此操作。
最佳答案
如果我理解正确的话,你的 from_date 和 to_date 只是日期。如果您将它们设置为 python datetime 对象,其中包含您想要结果的日期/时间,那么它应该可以工作。
关于python - 如何在 SqlAlchemy 中查询具有分钟/小时步长间隔的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30234706/