您看到graph[empty]的原因是因为这是 Python 图形对象的实际字符串表示形式——请参见此处的代码。该图实际上可能包含数据,所以如果它是类似graph[remote]或graph[]的东西会更好。我已经提出了一个问题来解决这个问题。
开箱即用,JanusGraph 没有为 Python 配置。您可以在Apache TinkerPop 文档中找到有关如何执行此操作的文档。首先安装gremlin-python
. 下面是假设您使用的是使用 TinkerPop 3.2.3 的 JanusGraph 0.1.1 的命令:
bin/gremlin-server.sh -i org.apache.tinkerpop gremlin-python 3.2.3
接下来修改conf/gremlin-server/gremlin-server.yaml
添加gremlin-python
脚本引擎:
scriptEngines: {
gremlin-groovy: {
imports: [java.lang.Math],
staticImports: [java.lang.Math.PI],
scripts: [scripts/empty-sample.groovy]},
gremlin-jython: {},
gremlin-python: {}
}
要使用 Gremlin Python,您需要通过 Gremlin Server,因此启动 JanusGraph预打包发行版:
bin/janusgraph.sh start
从 Gremlin 控制台:
gremlin> graph = JanusGraphFactory.open('conf/janusgraph-cassandra-es.properties')
==>standardjanusgraph[cassandrathrift:[127.0.0.1]]
gremlin> GraphOfTheGodsFactory.load(graph)
==>null
gremlin> g = graph.traversal()
==>graphtraversalsource[standardjanusgraph[cassandrathrift:[127.0.0.1]], standard]
gremlin> g.V().count()
14:51:58 WARN org.janusgraph.graphdb.transaction.StandardJanusGraphTx - Query requires iterating over all vertices [()]. For better performance, use indexes
==>12
安装 Gremlin-Python 驱动程序,再次匹配 TinkerPop 版本:
pip install gremlinpython==3.2.3
从 Python 3 外壳:
>>> 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
>>> graph = Graph()
>>> g = graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','g'))
>>> print(graph)
graph[empty]
>>> print(g)
graphtraversalsource[graph[empty]]
>>> g.V().count().next()
12
>>> g.addV('god').property('name', 'mars').property('age', 3500).next()
v[4280]
>>> g.V().count().next()
13
请记住,当您在 Python shell 中工作时,图形遍历不会自动迭代,因此您需要确保使用iterate()
ornext()
或来迭代遍历toList()
。