你如何让Titan图数据库与Python一起工作?

时间:2013-09-18 21:13:00

标签: python titan rexster

我是新手,我正在努力让Titan使用Python。我已经在这一天打了一个半天,无法到达任何地方。我尝试过灯泡和rexpro-python,但似乎没什么用。

rexpro-python 中输入以下代码:

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

将挂起并且服务器生成以下消息(对于titan版本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}')

在Titan服务器上有类似的例外。有没有人得到这个工作?

2 个答案:

答案 0 :(得分:1)

对于rexpro-python,您有版本问题。最新版本的RexPro Python将连接到TinkerPop / Rexster 2.4.0。 Titan尚不支持该版本。截至Titan 0.3.2,它支持TinkerPop 2.3.x.看起来这是rexpro-python碰撞到2.4.0之前的最后一次提交:

https://github.com/bdeggleston/rexpro-python/commit/3597f4ce5a4da69ec64f174aa1a064abf7524693

但您可能需要稍微查看提交历史记录,以确保获得正确的提交历史记录。

灯泡似乎正在调用手动索引,这是Titan不支持的。 gremlin-users和/或areuliusgraphs邮件列表中有很多帖子。查看此帖子并提及您的确切问题:

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

简短回答看起来Bulbs已更新以支持Titan。也许,你在某处仍然存在一些版本不兼容。

答案 1 :(得分:1)

使用Titan 1.0.0或更高版本,我们有更好的方法从python连接。

现在泰坦带有Gremlin服务器。 Gremlin服务器为非JVM语言(例如Python,Javascript等)提供了与TinkerPop堆栈通信的能力。

Gremlin Server是Rexster的替代品。

启动gremlin服务器(此脚本与titan一起打包):

sh gremlin-server.sh 

类似的批处理脚本可用于同一目录中的Windows。

一旦启动,以下python驱动程序应该有助于连接Gremlin服务器:

  • aiogremlin - 基于asyncio和aiohttp的Python 3库,它使用websockets与Gremlin Server进行通信。
  • gremlinclient - Gremlin Server的异步Python 2/3客户端,允许灵活的协程语法 - Trollius,Tornado,Asyncio。这是与aiogremlin的作者。我相信,不再支持aiogremlin,这是他工作的最新项目。
  • gremlinrestclient - 使用HTTP通过REST与Gremlin服务器通信的Python 2/3库。

基于Python的查询语言库,可以在开发过程中提供帮助:

  • gremlin-py - 编写可以发送给Gremlin Server的纯Python Gremlin。
  • gremlin-python - 允许在遍历属性图时使用Python语法。