GridDB Python中无法获取表格行数的问题求助
GridDB Python中无法获取表格行数的问题求助
我之前用GridDB Python SDK做聚合查询的时候,刚好踩过一模一样的坑!你遇到的问题本质是GridDB对普通查询结果和聚合查询结果的处理逻辑完全不同,咱们来一步步理清楚:
问题根源
你用SELECT COUNT(*)执行聚合查询时,返回的是AggregationResult对象,而不是普通查询里的行数据对象。这个聚合结果有专属的取值方法,不能用普通的下标row[0]、get(0)这类方式获取值,这就是各种报错的原因:
'AggregationResult' object is not subscriptable:它不支持下标访问语法has no attribute 'getvalue':该对象确实没有这个方法CC_NO_SUCH_ELEMENT:get(0)是在查找第0列,但聚合结果并非列结构,所以会报元素不存在
解决办法
针对COUNT(*)这种返回整数类型的聚合结果,你需要用AggregationResult的get_long()方法来取值(因为COUNT返回的是长整型数值)。把你read_data函数里的COUNT查询部分改成下面的代码:
sqlSelect = f"SELECT COUNT(*) FROM {container_name}" query = container.query(sqlSelect) result = query.fetch() if result.has_next(): agg_result = result.next() row_count = agg_result.get_long() # 用get_long()获取COUNT的结果 print(f"Row count: {row_count}") else: print("No rows")
额外小提示
不同聚合函数对应的取值方法不同,你可以根据返回类型匹配:
- 计数、整数求和:用
get_long() - 平均值、浮点类型聚合:用
get_double() - 最大值/最小值:根据字段类型选择
get_long()、get_string()、get_double()等
修改完再运行代码,就能正确输出你写入的1000条数据的行数啦!
备注:内容来源于stack exchange,提问作者dede kyuti




