gremlin python retrieves ID and tags (valueMap(True))… here is a solution to the problem.
gremlin python retrieves ID and tags (valueMap(True))
python g.V('test_red1').valueMap().toList()
Works fine, but I get this error when I pass true to the request id and label. Is there anything I’m missing?
g.V('test_red1').valueMap(True).toList()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ec2-user/environment/merchantGraph/gremlin_python/process/traversal.py", line 52, in toList
return list(iter(self))
File "/home/ec2-user/environment/merchantGraph/gremlin_python/process/traversal.py", line 43, in __next__
...
Am I missing something. I’m using AWS Neptune….
I’m adding extra import statements
and backtracking
import time
import requests
import json
from gremlin_python import statics
from gremlin_python.structure.graph import Graph
from gremlin_python.process.graph_traversal import __
from gremlin_python.process.strategies import *
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
import boto3
from os import environ
graph = Graph()
g = graph.traversal().withRemote(DriverRemoteConnection(environ['gremlinNeptuneConnection'],'g'))
# this works
g.V('test_red1').valueMap().toList()
# this fails
g.V('test_red1').valueMap(True).toList()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ec2-user/environment/merchantGraph/gremlin_python/process/traversal.py", line 52, in toList
return list(iter(self))
....
File "/home/ec2-user/environment/merchantGraph/gremlin_python/structure/io/graphsonV3d0.py", line 455, in objectify
new_dict[reader.toObject(l[x])] = reader.toObject(l[x + 1])
TypeError: unhashable type: 'dict'
Solution
My guess is that you’re having trouble with the recently reported valueMap(true)
error :
https://issues.apache.org/jira/browse/TINKERPOP-1860
It is patched and will be fixed in version 3.3.2. Until then you’ll have to fix this, because there’s really no workaround other than reverting to GraphSON 2.0 (which has its own set of drawbacks). One workaround is project()
your result:
gremlin> g.V().project('props','id','label').
...... 1> by(valueMap()).
...... 2> by(id).
...... 3> by(label)
==>[props:[name:[marko],age:[29]],id:1,label:person]
==>[props:[name:[vadas],age:[27]],id:2,label:person]
==>[props:[name:[lop],lang:[java]],id:3,label:software]
==>[props:[name:[josh],age:[32]],id:4,label:person]
==>[props:[name:[ripple],lang:[java]],id:5,label:software]
==>[props:[name:[peter],age:[35]],id:6,label:person]