在不重复代码的情况下打印 gremlin 查询 运行

print gremlin query being run without repeating code

我想打印查询 运行 用于调试。
如果不重复查询两次,我想不出最好的方法,一次作为要打印的字符串,一次实际执行它。

我试过了:
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))
但这不起作用,因为它只是重新分配查询字符串,而不是在第 3 行 运行 实际

顺便说一句,我 运行 在 Neptune 中绘制我的图表,所以如果解决方案与 Neptune 兼容就更好了

更新
我找到了一个 替代方案(尽管 不理想):

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)
但理想情况下最好的情况是,如果我可以 log/print 我想要的完整查询:
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))

使用 Python eval

解决
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)]