#!/usr/bin/env python3 """ 调试Flux查询语句 """ import json import os from influx_service import InfluxService, InfluxConnectionParams def load_config(): """从default.json加载配置""" config_path = os.path.join(os.path.dirname(__file__), "default.json") try: with open(config_path, 'r', encoding='utf-8') as f: config = json.load(f) return config.get('influx', {}) except Exception as e: print(f"❌ 加载配置文件失败: {e}") return {} def test_flux_query(): """测试Flux查询语句""" config = load_config() # 创建连接参数 params = InfluxConnectionParams( url=config.get('url', ''), org=config.get('org', ''), token=config.get('token', '') ) # 创建服务 service = InfluxService(params) # 测试参数 bucket = config.get('bucket', 'default') measurement = config.get('measurement', 'status') fields = ['status'] filters = {} time_range = "-1h" print("🔍 测试Flux查询") print(f"Bucket: {bucket}") print(f"Measurement: {measurement}") print(f"Fields: {fields}") print(f"Time Range: {time_range}") print() # 生成Flux查询语句 flux = service.build_flux( bucket=bucket, measurement=measurement, fields=fields, filters=filters, time_range=time_range ) print("📝 生成的Flux查询语句:") print("-" * 50) print(flux) print("-" * 50) print() # 尝试执行查询 try: print("🚀 执行查询...") df = service.query( bucket=bucket, measurement=measurement, fields=fields, filters=filters, time_range=time_range ) print(f"✅ 查询成功! 返回 {len(df)} 行数据") if not df.empty: print("📊 数据预览:") print(df.head()) # 检查status字段的值 if 'status' in df.columns: status_values = df['status'].unique() print(f"🎯 Status字段的唯一值: {status_values}") elif '_value' in df.columns: status_values = df['_value'].unique() print(f"🎯 _value字段的唯一值: {status_values}") else: print("⚠️ 查询结果为空") except Exception as e: print(f"❌ 查询失败: {e}") print("\n🔧 可能的原因:") print("1. Bucket不存在") print("2. Measurement不存在") print("3. 时间范围内没有数据") print("4. Flux语法错误") def main(): print("Flux查询调试工具") print("=" * 50) test_flux_query() if __name__ == "__main__": main()