如何通过Grakn Python Client获取查询所有变量并解决报错
获取Grakn查询中所有变量的解决方案
首先,咱们先搞清楚你遇到的错误原因:你的查询语句里定义的变量是$p、$f、$r,但代码里却尝试获取"x"这个变量——这个变量在你的查询里根本不存在,所以answer.map().get("x")返回了None,当你试图访问None.id时自然就触发了AttributeError。
接下来回到你的核心需求:无需逐个指定变量就能获取查询中的所有变量,其实Grakn Python Client的Answer对象提供的map()方法已经返回了包含所有查询变量的字典,你只需要遍历这个字典就能拿到所有变量及其对应的值,不用手动指定每个变量名。
正确的代码示例
read_query = "match $p isa person; $f isa family; $r ($p, $f); get;" answer_iterator = read_transaction.query(read_query) for answer in answer_iterator: # 获取当前结果中所有变量的键值对,键是不带$的变量名(如"p"、"f"、"r") all_variables = answer.map() # 遍历所有变量 for var_name, var_value in all_variables.items(): print(f"Retrieved variable *${var_name}* with id {var_value.id}")
补充说明
answer.map()返回的字典中,键是查询里变量名去掉$后的字符串(比如查询里的$p对应字典里的键"p")- 如果你需要一次性获取所有变量的值,也可以直接通过字典的
values()方法拿到,比如all_values = all_variables.values()
内容的提问来源于stack exchange,提问作者user7420209
相关产品推荐
相关产品推荐

