我想打印正在运行的查询以进行调试。
如果不重复查询两次,我无法找出最好的方法,一次是要打印的字符串,一次是实际执行它。
我试过了:add_vertex_query = "g.addV('addvqueryLabel').next()"
print("going to run query: %s"%(add_vertex_query))
add_vertex_query_res = add_vertex_query
print("add_vertex_query result: %s"%(add_vertex_query_res))
但这不起作用,因为它只是在第三行重新分配查询字符串而不是实际运行它
顺便说一句,我正在海王星中运行我的图形,所以如果解决方案与海王星兼容就好了
更新
我找到了替代方案(虽然不理想(:
query = g.V().valueMap(True)
print("query: %s"%(query))
result_list = query.toList()
print("result: %s"%(result_list))
这在打印输出中提供了query: [['V'], ['valueMap', True]]
,可以理解
为"g.V().valueMap(True)
">
但理想情况下,最好的情况是我可以记录/打印我想要的确切整个查询:g.V().valueMap(True).toList()
而不必在代码中复制字符串,例如
query_string = "g.V().valueMap(True).toList()"
print("running query: %s"%(query_string))
res = g.V().valueMap(True).toList()
print("results: %s"%(res))
使用 Pythoneval
求解
query_string = "g.V().valueMap(True).limit(5).toList()"
print("running query: %s ..."%(query_string))
res_list = eval(query_string)
[print("result %s: %s"%(i, res)) for i, res in enumerate(res_list, 1)]