Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQL将where子句应用于任意查询结果_Python_Sql_Pandas_Sqlalchemy - Fatal编程技术网

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

Python SQL将where子句应用于任意查询结果,python,sql,pandas,sqlalchemy,Python,Sql,Pandas,Sqlalchemy,我正在开发一个系统,在这个系统中,用户引入了一个SQL server/db连接和一个有效的SQL查询,我将其保存在我的系统中。我正在使用python+sqlalchemy+pandas来实现这一点 该查询将返回一个类似这样的表,其中唯一的规则是查询结果必须有一个timestampas DateTime字段和至少另一个带有数值的列,但名称是随机的 +-----------+----------+---------+-----+---------+ | timestamp | series_1 |

我正在开发一个系统,在这个系统中,用户引入了一个SQL server/db连接和一个有效的SQL查询,我将其保存在我的系统中。我正在使用python+sqlalchemy+pandas来实现这一点

该查询将返回一个类似这样的表,其中唯一的规则是查询结果必须有一个
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”)