Можно ли сгенерировать запросы gremlin из байт-кода в Python?

Можно ли сгенерировать скрипт gremlin из байт-кода?

Я работаю над POC, в котором мне нужно запросить базу данных графа Azure CosmosDB через Gremlin API.

В настоящее время Azure CosmosDB не поддерживает байт-код. Команда разработчиков Azure начала работать над этим, но сроки выпуска пока не опубликованы.

Я хотел бы подготовить рабочий код, который потребует минимального рефакторинга в будущем, когда поддержка байт-кода станет общедоступной.

Основываясь на документации Apache TinkerPop, существует два способа отправки запросов Gremlin: байт-код и сценарий.

# script
client = Client('ws://localhost:8182/gremlin', 'g')
list = client.submit("g.V().has('person','name',name).out('knows')",{'name': 'marko'}).all()

# bytecode
g = traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','g'))
list = g.V().has("person","name","marko").out("knows").toList()

"Путь байт-кода" кажется мне гораздо более эффективным (проверка синтаксиса, IDE intellisens и т. Д.), Более того, я заинтересован в создании DSL (предметно-ориентированного языка).

Можно ли использовать свободный API и сериализовать его в строку, аналогично следующему:

client = Client('ws://localhost:8182/gremlin', 'g')
g = traversal()
q = g.V().has("person","name","marko").out("knows").toString()
list = client.submit(q).all()

Я использую python 3.5 и gremlinpython 3.4.0

1 ответ

Определенно возможно генерировать строковое представление обхода из байт-кода. TinkerPop уже делает это для скриптов Groovy и Python (по разным причинам, в первую очередь для тестирования, но у него есть и другие применения, такие как поддержка лямбда-выражений в байт-коде и для других утилитарных целей). Мы осуществляем это через ScriptTranslator реализации и есть одна для Groovy и две для Python (где одна на самом деле для Jython). Проблема, конечно, в том, что все эти ScriptTranslator Технически это примеры для JVM, и похоже, что вам нужно что-то для нативного Python.

Возможно, вы могли бы изучить PythonTranslator код и реализовать это на родном Python? Это в основном просто куча if-then и конкатенация строк.

Другие вопросы по тегам