我正在開發一個系統,其中用戶引入 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
提交
取消