gremlin python извлекает идентификаторы и метки (valueMap(True))

python g.V('test_red1').valueMap().toList()

работает нормально, но когда я передаю true для запроса идентификаторов и меток, я получаю эту ошибку. Что-то, что мне не хватает?

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__
 ...

Я что-то пропустил. Я использую AWS Neptune ...

Я добавляю дополнительные операторы импорта

и трассировка

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'

1 ответ

Решение

Я думаю, что у вас возникли проблемы с этой недавно сообщенной ошибкой с valueMap(true):

https://issues.apache.org/jira/browse/TINKERPOP-1860

это исправлено и будет исправлено с выпуском 3.3.2. До тех пор вам придется обходить эту проблему, так как на самом деле нет пути к возврату к GraphSON 2.0 (который имеет свой собственный набор недостатков). Одним из обходных путей будет project() ваши результаты:

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]
Другие вопросы по тегам