печать запроса Гремлина без повторяющегося кода - PullRequest
0 голосов
/ 30 сентября 2018

Я хотел бы напечатать запрос , выполняемый для отладки.
Я не могу найти лучший способ сделать это, не повторяя запрос дважды, один раз как строку для печати, один разна самом деле выполнить это.

я пробовал:
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-й строке

кстати, я запускаю свой график в Нептун , поэтому было бы неплохо, если бы решение было совместимым с Нептуном

ОБНОВЛЕНИЕ
Я нашел альтернативу (хотя не идеально ):

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))

1 Ответ

0 голосов
/ 01 октября 2018

Решено с помощью 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)]
...