You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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_ELEMENTget(0)是在查找第0列,但聚合结果并非列结构,所以会报元素不存在

解决办法

针对COUNT(*)这种返回整数类型的聚合结果,你需要用AggregationResultget_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

火山引擎 最新活动