This commit is contained in:
DingZQ
2025-05-05 20:52:07 +08:00
parent 24226123d6
commit ce557a7c6c

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',