From ce557a7c6c372fa2379693653682921fbb1200cd Mon Sep 17 00:00:00 2001 From: DingZQ Date: Mon, 5 May 2025 20:52:07 +0800 Subject: [PATCH] Refine --- influxdb_api.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/influxdb_api.py b/influxdb_api.py index 67dd02c..171657f 100644 --- a/influxdb_api.py +++ b/influxdb_api.py @@ -1,4 +1,4 @@ -from influxdb_client import InfluxDBClient, BucketsApi, WriteApi, OrganizationsApi, Point, QueryApi, WriteOptions +from influxdb_client import InfluxDBClient, BucketsApi, WriteApi, OrganizationsApi, Point, QueryApi, WriteOptions, DeleteApi from typing import List, Dict from datetime import datetime, timedelta, timezone from influxdb_client.client.write_api import SYNCHRONOUS, ASYNCHRONOUS @@ -3489,7 +3489,29 @@ def upload_cleaned_SCADA_data_to_influxdb(file_path: str, bucket: str="SCADA_dat write_api.close() client.close() +# 2025/05/05 DingZQ +# 删除某一天的数据 +def delete_data(delete_date: str, bucket: str) -> None: + """ + 删除某一天的数据 + :param delete_date: 删除的日期,格式为 'YYYY-MM-DD' + :param bucket: 选择要删除数据的bucket + :return: + """ + client = get_new_client() + if not client.ping(): + print("{} -- Failed to connect to InfluxDB.".format(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))) + start_time = (datetime.strptime(delete_date, "%Y-%m-%d") - timedelta(days=1)).replace(hour=16, minute=0, second=0, tzinfo=timezone.utc).isoformat() + stop_time = datetime.strptime(delete_date, "%Y-%m-%d").replace(hour=15, minute=59, second=59, tzinfo=timezone.utc).isoformat() + + # 构造删除谓词(InfluxDB Delete API 要求的 SQL-like 语句) + # 注意:字段名用 _field,measurement 用 _measurement,标签直接写标签名 + predicate = f'date="{delete_date}"' + + delete_api: DeleteApi = client.delete_api() + delete_api.delete(start=start_time, stop=stop_time, predicate=predicate, bucket=bucket) + # 示例调用 if __name__ == "__main__": @@ -3618,7 +3640,10 @@ if __name__ == "__main__": # print(leakage) # 示例:upload_cleaned_SCADA_data_to_influxdb - upload_cleaned_SCADA_data_to_influxdb(file_path='./标准cleaned_demand_data.csv') + # upload_cleaned_SCADA_data_to_influxdb(file_path='./标准cleaned_demand_data.csv') + + # 示例:delete_data + delete_data(delete_date='2025-05-04', bucket='SCADA_data') # 示例:query_cleaned_SCADA_data_by_device_ID_and_timerange # result = query_cleaned_SCADA_data_by_device_ID_and_timerange(query_ids_list=['9485'], start_time='2024-03-24T00:00:00+08:00',