#!/usr/bin/env python3 """ 简单的InfluxDB测试 """ import json import os from influxdb_client import InfluxDBClient, Point, WritePrecision from influxdb_client.client.write_api import SYNCHRONOUS import time def load_config(): config_path = os.path.join(os.path.dirname(__file__), "default.json") with open(config_path, 'r', encoding='utf-8') as f: config = json.load(f) return config.get('influx', {}) def test_simple_write_read(): config = load_config() client = InfluxDBClient( url=config.get('url'), token=config.get('token'), org=config.get('org') ) bucket = config.get('bucket', 'PCM') print("🧪 简单写入读取测试") print(f"Bucket: {bucket}") # 1. 写入数据 - 使用line protocol print("\n1️⃣ 使用line protocol写入...") write_api = client.write_api(write_options=SYNCHRONOUS) # 直接使用line protocol字符串 line_protocol = f"experiment_status,host=test status=\"1\",temp=25.0" print(f"Line protocol: {line_protocol}") try: write_api.write(bucket=bucket, record=line_protocol) print("✅ Line protocol写入成功") except Exception as e: print(f"❌ Line protocol写入失败: {e}") return # 等待一下让数据落盘 print("⏳ 等待2秒让数据落盘...") time.sleep(2) # 2. 查询数据 print("\n2️⃣ 查询数据...") query_api = client.query_api() # 使用最简单的查询 query = f''' from(bucket: "{bucket}") |> range(start: -10m) |> filter(fn: (r) => r._measurement == "experiment_status") ''' print("查询语句:") print(query) try: result = query_api.query(query) found_data = False for table in result: print(f"表格: {table}") for record in table.records: found_data = True print(f" 时间: {record.get_time()}") print(f" measurement: {record.get_measurement()}") print(f" field: {record.get_field()}") print(f" value: {record.get_value()}") print(f" tags: {record.values}") if found_data: print("✅ 找到数据!") else: print("❌ 没有找到数据") # 尝试查询所有数据 print("\n3️⃣ 查询bucket中的所有数据...") query_all = f'from(bucket: "{bucket}") |> range(start: -1h) |> limit(n: 5)' result_all = query_api.query(query_all) all_found = False for table in result_all: for record in table.records: all_found = True print(f" measurement: {record.get_measurement()}") print(f" field: {record.get_field()}") print(f" value: {record.get_value()}") break # 只显示第一条 if not all_found: print("❌ bucket中没有任何数据") except Exception as e: print(f"❌ 查询失败: {e}") import traceback traceback.print_exc() client.close() if __name__ == "__main__": test_simple_write_read()