为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

料青山看我应如是 2023-09-26 14:21:17
我正在开发一个系统,其中用户引入 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"


查看完整回答
反对 回复 2023-09-26
  • 1 回答
  • 0 关注
  • 46 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信