我正在开发一个系统,其中用户引入 SQL 服务器/数据库连接和有效的 SQL 查询,并将其保存在我的系统上。我正在使用 python+sqlalchemy+pandas 来完成此任务。该查询将返回一个像这样的表,其中唯一的规则是查询结果必须具有一个timestamp日期时间字段和至少另一列包含数值但名称随机的列。+-----------+----------+---------+-----+---------+| timestamp | series_1 | serie_2 | ... | serie_n |+-----------+----------+---------+-----+---------+| <time> | numeric | numeric | ... | numeric |+-----------+----------+---------+-----+---------+| ... |+-----------+----------+---------+-----+---------+| <time> | numeric | numeric | ... | numeric |+-----------+----------+---------+-----+---------+然后我有一个使用 cron 格式运行查询的调度程序,我处理数据并将其存储在我的系统数据库中。问题是,每次我使用调度程序运行查询时,我都会有旧的+新的记录,为了处理这个问题,我使用 pandas 过滤结果以仅获取新记录,此时性能还可以(20s)对于 20 个系列的 10k 条记录,考虑每周更新 1 次是合理的),但对于长时间有大量数据的情况来说,这不是一个好的解决方案。因此,我正在考虑是否可以使用 WHERE 子句包装用户查询结果,以在查询级别过滤结果timestamp,而不触及查询。
1 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
我是这样做的:
query = f"SELECT sub.* from ({query}) as sub WHERE sub.timestamp > '{latest_timestamp}' ORDER BY sub.timestamp ASC"
添加回答
举报
0/150
提交
取消