Как загрузить тинкерграф в python / gremlin? - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь использовать gremlin в python.Я импортировал следующее:

from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
from gremlin_python.structure.graph import Graph
from gremlin_python import statics
from gremlin_python.process.graph_traversal import __
from gremlin_python.process.strategies import *
from gremlin_python.process.traversal import *
import asyncio
statics.load_statics(globals()) 

Когда я запускаю это:

graph = TinkerGraph.open() 
graph.io(graphml()).readGraph('air-routes.graphml') 

я получаю следующую ошибку:

NameError: name 'TinkerGraph' is not defined

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 10 декабря 2018

TinkerGraph в Python отсутствует.В gremlin-python вы можете получить ссылку на граф только на сервере, и это может быть TinkerGraph или что-то еще.Если вы хотите загрузить данные таким способом, вы должны выполнить эту команду как скрипт через экземпляр Client:

client = Client('ws://localhost:45940/gremlin', 'g')
client.submit("graph.io(graphml()).readGraph('air-routes.graphml');[]").all().result()

, где «график» в этом сценарии - это экземпляр Graph, который уже существует насервер (и скорее всего пустой).Если вы используете Gremlin Server, вы можете рассмотреть возможность выполнения этой загрузки отдельно как часть запуска Gremlin Server , а затем просто использовать gremlin-python для запроса этих данных.Это, вероятно, было бы лучше всего в этом примере, так как данные будут просто присутствовать при запуске сервера.

Обратите внимание, что в 3.4.0 мы вводим шаг io(), который будет частью gremlin-python напрямуюв этот момент вы сможете напрямую выполнить:

g.io('air-routes.xml').read()

в собственном Python, и он будет работать (опять же, экземпляр Graph должен быть определен удаленно), хотя файл должен быть доступен для чтения на сервере.

Вот мой рабочий пример в оболочке Python для отправки скрипта, сначала с ошибкой торнадо, а затем без:

$ env/bin/python
Python 3.4.3 (default, Nov 28 2017, 16:41:13) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from gremlin_python.driver.client import Client
>>> client = Client('ws://localhost:8182/gremlin', 'g')
>>> client.submit("g.V()").all().result()
Traceback (most recent call last):
  File "/home/smallette/git/apache/incubator-tinkerpop/gremlin-python/target/python3/gremlin_python/driver/client.py", line 51, in __init__
    from gremlin_python.driver.tornado.transport import (
  File "/home/smallette/git/apache/incubator-tinkerpop/gremlin-python/target/python3/gremlin_python/driver/tornado/transport.py", line 19, in <module>
    from tornado import ioloop, websocket
ImportError: No module named 'tornado'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/smallette/git/apache/incubator-tinkerpop/gremlin-python/target/python3/gremlin_python/driver/driver_remote_connection.py", line 45, in __init__
    password=password)
  File "/home/smallette/git/apache/incubator-tinkerpop/gremlin-python/target/python3/gremlin_python/driver/client.py", line 54, in __init__
    raise Exception("Please install Tornado or pass"
Exception: Please install Tornado or passcustom transport factory
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
$ env/bin/pip install tornado
Collecting tornado
Collecting backports-abc>=0.4 (from tornado)
  Using cached https://files.pythonhosted.org/packages/7d/56/6f3ac1b816d0cd8994e83d0c4e55bc64567532f7dc543378bd87f81cebc7/backports_abc-0.5-py2.py3-none-any.whl
Installing collected packages: backports-abc, tornado
Successfully installed backports-abc-0.5 tornado-5.1.1
smallette@ubuntu:~/git/apache/incubator-tinkerpop/gremlin-python/target/python3$ env/bin/python
Python 3.4.3 (default, Nov 28 2017, 16:41:13) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from gremlin_python import statics
>>> client = Client('ws://localhost:8182/gremlin', 'g')
>>> client.submit("g.V()").all().result()
[v[0]]
...