SQL 将 where 子句应用于任意查询结果

我正在开发一个系统,其中用户引入 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,而不触及查询。


料青山看我应如是
浏览 72回答 1
1回答

HUX布斯

我是这样做的:query&nbsp;=&nbsp;f"SELECT&nbsp;sub.*&nbsp;from&nbsp;({query})&nbsp;as&nbsp;sub&nbsp;WHERE&nbsp;sub.timestamp&nbsp;>&nbsp;'{latest_timestamp}'&nbsp;ORDER&nbsp;BY&nbsp;sub.timestamp&nbsp;ASC"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python