From 1a23667b1bda8a0dce261da2dff9ff317e6fc0ce Mon Sep 17 00:00:00 2001 From: DingZQ Date: Sat, 15 Feb 2025 15:15:36 +0800 Subject: [PATCH] Add API to query influxdb info --- influxdb_api.py | 36 ++++++++++++++++++++++++++++++++++++ main.py | 8 ++++++++ 2 files changed, 44 insertions(+) diff --git a/influxdb_api.py b/influxdb_api.py index d1504a1..e885c94 100644 --- a/influxdb_api.py +++ b/influxdb_api.py @@ -1328,6 +1328,42 @@ def query_curve_by_ID_property_daterange(ID: str, type: str, property: str, star return results +def query_buckets(client: InfluxDBClient=client) -> list[str]: + # 获取 Buckets API 实例 + buckets_api = client.buckets_api() + + # 查询所有 Buckets + buckets = buckets_api.find_buckets().buckets + + print("All Buckets:") + buckets_list = [] + for bucket in buckets: + buckets.append(bucket.name) + + return buckets_list + +def query_tags(bucket: str, client: InfluxDBClient=client) -> list[str]: + query_api = client.query_api() + + # 定义 Flux 查询 + query = f''' + from(bucket: "your-bucket") + |> range(start: -1y) # 时间范围(可根据需要调整) + |> filter(fn: (r) => r._measurement == "{bucket}") + |> tagKeys() # 直接获取所有 Tag 键名 + ''' + + # 执行查询 + result = query_api.query(query) + + # 提取 Tag 列表 + tag_keys = [] + for table in result: + for record in table.records: + tag_keys.append(record.get_value()) + + tag_keys + # 示例调用 if __name__ == "__main__": url = influxdb_info.url diff --git a/main.py b/main.py index 14e3d27..b8770d5 100644 --- a/main.py +++ b/main.py @@ -2130,6 +2130,14 @@ async def query_scada_data_by_device_id_and_time(ids: str, querytime: str): return influxdb_api.query_SCADA_data_by_device_ID_and_time(query_ids_list=query_ids, query_time=querytime, client=influx_client) +@app.get("/queryinfluxdbbuckets/") +async def fastapi_query_influxdb_buckets(): + return influxdb_api.query_buckets() + +@app.get("/queryinfluxdbbuckettags/") +async def fastapi_query_influxdb_bucket_tags(bucket: str): + return influxdb_api.query_tags(bucket=bucket) + # DingZQ, 2024-12-31, generate openapi.json def generate_openapi_json():