This commit is contained in:
DingZQ
2025-05-05 20:52:07 +08:00
parent 24226123d6
commit ce557a7c6c
+27 -2
View File
@@ -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 typing import List, Dict
from datetime import datetime, timedelta, timezone from datetime import datetime, timedelta, timezone
from influxdb_client.client.write_api import SYNCHRONOUS, ASYNCHRONOUS 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() write_api.close()
client.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 语句)
# 注意:字段名用 _fieldmeasurement 用 _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__": if __name__ == "__main__":
@@ -3618,7 +3640,10 @@ if __name__ == "__main__":
# print(leakage) # print(leakage)
# 示例:upload_cleaned_SCADA_data_to_influxdb # 示例: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 # 示例: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', # result = query_cleaned_SCADA_data_by_device_ID_and_timerange(query_ids_list=['9485'], start_time='2024-03-24T00:00:00+08:00',