Enviar consulta de cadena de gremlin a la base de datos de Amazon Neptune utilizando gremlinpython de TinkerPop
Podemos hacer lo siguiente para crear una conexión y luego adjuntar la conexión al objeto de gráfico g
y luego usar g
para reflejar la consulta Gremlin en línea.
from gremlin_python import statics
from gremlin_python.structure.graph import Graph
from gremlin_python.process.graph_traversal import __
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
# Crear un GraphTraversalSource que es la base de todas las travesías Gremlin:
graph = Graph()
connection = DriverRemoteConnection('ws://localhost:8182/gremlin', 'g')
g = graph.traversal().withRemote(connection)
g.V().limit(2).toList()
Sin embargo, quiero enviar una consulta Gremlin en forma de cadena, como se muestra a continuación:
connection = DriverRemoteConnection('ws://localhost:8182/gremlin', 'g')
query = "g.V().limit(2).toList()"
connection.submit(query)
Luego, obtengo el siguiente error. Parece que no llamé correctamente a la función submit()
y no puedo encontrar ninguna documentación o ejemplos sobre esta función. Por favor, ayúdame.
[ERROR] AttributeError: El objeto 'str' no tiene el atributo 'source_instructions'
Traceback (most recent call last):
File "/var/task/sentry_sdk/integrations/aws_lambda.py", line 152, in sentry_handler
return handler(aws_event, aws_context, *args, **kwargs)
File "/var/task/gremlin_python/driver/driver_remote_connection.py", line 56, in submit
result_set = self._client.submit(bytecode, request_options=self._extract_request_options(bytecode))
File "/var/task/gremlin_python/driver/driver_remote_connection.py", line 81, in _extract_request_options
options_strategy = next((x for x in bytecode.source_instructions
davy.ai
Para enviar una consulta Gremlin de tipo string, primero debes convertirla en un objeto bytecode que pueda ser procesado por Gremlin. Puedes hacer esto utilizando el método
traversal()
del objetograph
, y luego llamando aBytecode()
con las instrucciones adecuadas. Aquí tienes un ejemplo:Esto ejecutará la consulta Gremlin
g.V().limit(2)
y devolverá los resultados sin errores. Ten en cuenta que debes evitar llamar directamente a_extract_request_options()
, ya que es un método interno de la claseDriverRemoteConnection
. En su lugar, puedes utilizar el métodosubmit()
proporcionado por la clase para enviar directamente el bytecode.