Python SQL将where子句应用于任意查询结果
我正在开发一个系统,在这个系统中,用户引入了一个SQL server/db连接和一个有效的SQL查询,我将其保存在我的系统中。我正在使用python+sqlalchemy+pandas来实现这一点 该查询将返回一个类似这样的表,其中唯一的规则是查询结果必须有一个Python SQL将where子句应用于任意查询结果,python,sql,pandas,sqlalchemy,Python,Sql,Pandas,Sqlalchemy,我正在开发一个系统,在这个系统中,用户引入了一个SQL server/db连接和一个有效的SQL查询,我将其保存在我的系统中。我正在使用python+sqlalchemy+pandas来实现这一点 该查询将返回一个类似这样的表,其中唯一的规则是查询结果必须有一个timestampas DateTime字段和至少另一个带有数值的列,但名称是随机的 +-----------+----------+---------+-----+---------+ | timestamp | series_1 |
timestamp
as DateTime字段和至少另一个带有数值的列,但名称是随机的
+-----------+----------+---------+-----+---------+
| timestamp | series_1 | serie_2 | ... | serie_n |
+-----------+----------+---------+-----+---------+
| <time> | numeric | numeric | ... | numeric |
+-----------+----------+---------+-----+---------+
| ... |
+-----------+----------+---------+-----+---------+
| <time> | numeric | numeric | ... | numeric |
+-----------+----------+---------+-----+---------+
+-----------+----------+---------+-----+---------+
|时间戳|系列|系列|系列| 2 |……|意甲|
+-----------+----------+---------+-----+---------+
||数字|数字|……|数字的|
+-----------+----------+---------+-----+---------+
| ... |
+-----------+----------+---------+-----+---------+
||数字|数字|……|数字的|
+-----------+----------+---------+-----+---------+
然后我有一个使用cron格式运行查询的调度器,我处理数据并将其存储在我的系统数据库中。问题是,每次我用调度器运行查询时,我都会有旧的+新的记录,为了处理这个问题,我使用pandas过滤结果,只得到新的记录,这在性能上是正常的(20个系列的10k记录20秒,考虑到我每周有1次更新是合理的),但在很长一段时间内,由于数据量很大,这并不是一个好的解决方案
因此,我正在考虑是否可以使用WHERE子句包装用户查询结果,以便在查询级别通过时间戳
过滤结果,而不必触摸查询。我是这样做的:
query = f"SELECT sub.* from ({query}) as sub WHERE sub.timestamp > '{latest_timestamp}' ORDER BY sub.timestamp ASC"
过滤结果的pandas代码是什么样子的?@NickODell我使用
df.query(“timestamp>@latest\u timestamp”)