Как заставить графовую базу данных Titan работать с Python?

Я новичок в этом и пытаюсь заставить Титана работать с Python. Уже полтора дня ломаю голову над этим и не могу никуда попасть. Я пробовал лампочки и rexpro-python, но ничего не работает.

В rexpro-python следующий код:

from rexpro import RexProConnection
conn = RexProConnection('localhost', 8184, 'graph')

зависнет и сервер выдаст следующее сообщение (для версии титана 0.3.2, 0.3.1 и 0.2.1)

13/09/18 16:59:27 WARN filter.RexProMessageFilter: unsupported rexpro version: 1

В Лампочках:

from bulbs.config import Config, DEBUG
from bulbs.rexster import Graph

config = Config('http://localhost:8182/graphs/graph')
g = Graph(config)

Выдает следующую ошибку:

SystemError: ({'status': '500', 'transfer-encoding': 'chunked', 'server': 'grizzly/2.2.16', 'connection': 'close', 'date': 'Wed, 18 Sep 2013 21:06:27 GMT', 'access-control-allow-origin': '*', 'content-type': 'application/json'}, '{"message":"","error":"javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: groovy.lang.MissingMethodException.idx() is applicable for argument types: () values: []\\nPossible solutions: is(java.lang.Object), any(), find(), any(groovy.lang.Closure), with(groovy.lang.Closure), _(groovy.lang.Closure)","api":{"description":"evaluate an ad-hoc Gremlin script for a graph.","parameters":{"rexster.returnKeys":"an array of element property keys to return (default is to return all element properties)","rexster.showTypes":"displays the properties of the elements with their native data type (default is false)","load":"a list of \'stored procedures\' to execute prior to the \'script\' (if \'script\' is not specified then the last script in this argument will return the values","rexster.offset.end":"end index for a paged set of data to be returned","rexster.offset.start":"start index for a paged set of data to be returned","params":"a map of parameters to bind to the script engine","language":"the gremlin language flavor to use (default to groovy)","script":"the Gremlin script to be evaluated"}},"success":false}')

с аналогичным исключением на сервере Титан. Кто-нибудь заставил это работать?


person Tim Ludwinski    schedule 18.09.2013    source источник
comment
Используйте лампочки.титан, а не лампочки.рекстер   -  person espeed    schedule 25.01.2014


Ответы (2)


В случае с rexpro-python у вас проблема с версией. Последняя версия RexPro Python будет подключаться к TinkerPop/Rexster 2.4.0. Титан пока не поддерживает эту версию. Начиная с Titan 0.3.2, он поддерживает TinkerPop 2.3.x. Похоже, это последний коммит перед переходом на совместимость с 2.4.0 для rexpro-python:

https://github.com/bdeggleston/rexpro-python/commit/3597f4ce5a4da69ec64f17a>39aa1a064abf74aa1a064abf7

но вы можете немного просмотреть историю коммитов, чтобы убедиться, что вы выбрали правильный.

Bulbs выглядит так, как будто он обращается к ручному индексу, что Titan не поддерживает. Об этом есть ряд сообщений на gremlin-users и/ или areuliusgraphs. Проверьте этот пост со ссылкой на вашу точную проблему:

https://groups.google.com/forum/#!msg/gremlin-users/s7Ag1tjbxLs/nC5WjtHh6woJ

Краткий ответ: похоже, что Bulbs был обновлен для поддержки Titan. Возможно, у вас еще где-то несовместимость версий.

person stephen mallette    schedule 19.09.2013
comment
У меня указанная вами версия RexPro работает с Titan 0.3.1. Я подозреваю, что другие версии также будут работать. - person Tim Ludwinski; 19.09.2013
comment
Возвращаясь к этому, я подозреваю, что интерфейс Bulbs не работал, потому что в Titan 0.3.2 (вероятно, 0.3.1 и т. Д.) Была ошибка, из-за которой сервер REST (хотя и не RexPro) не запускался по умолчанию. Я сейчас использую 0.4.0. - person Tim Ludwinski; 14.11.2013
comment
Используйте bubls.titan, а не bulbs.rexster - person espeed; 25.01.2014

С Titan 1.0.0 или более поздней версии у нас есть лучшие способы подключения с Python.

Теперь титан поставляется с сервером Gremlin. Сервер Gremlin предоставляет возможность для языков, отличных от JVM (например, Python, Javascript и т. д.), взаимодействовать со стеком TinkerPop.

Gremlin Server заменяет Rexster.

Чтобы запустить сервер Gremlin (этот скрипт поставляется с титаном):

sh gremlin-server.sh 

Аналогичный пакетный скрипт доступен для окон в том же каталоге.

После запуска следующие драйверы Python должны помочь подключиться к серверу Gremlin:

  • aiogremlin — библиотека Python 3, основанная на asyncio и aiohttp, которая использует веб-сокеты для связи с сервером Gremlin.
  • gremlinclient — асинхронный клиент Python 2/3 для Gremlin Server, позволяющий использовать гибкий синтаксис сопрограммы — Trollius, Tornado, Асинцио. Это от того же автора, что и айогремлин. Насколько я знаю, aiogremlin больше не поддерживается, и это последний проект, над которым он работает.
  • gremlinrestclient — библиотека Python 2/3, которая использует HTTP для связи с сервером Gremlin через REST.

Библиотеки языка запросов на основе Python, которые могут помочь при разработке:

  • gremlin-py — напишите чистый Python Gremlin, который можно отправить на сервер Gremlin.
  • gremlin-python — позволяет использовать синтаксис Python при просмотре графиков свойств.
person Sairam Krish    schedule 09.05.2016