<p>之所以看到<strong>graph[empty]</strong>,是因为这是Python graph对象的实际字符串表示,请参见<a href="https://github.com/apache/tinkerpop/blob/3.2.6/gremlin-python/src/main/jython/gremlin_python/structure/graph.py#L37" rel="noreferrer">code here</a>。不过,该图实际上可能包含数据,因此如果它是类似于<strong>graph[remote]</strong>或<strong>graph[]</strong>的东西会更好。我打开了一个<a href="https://issues.apache.org/jira/browse/TINKERPOP-1769" rel="noreferrer">issue</a>来解决这个问题。</p>
<p>开箱即用,JanusGraph不是为Python配置的。您可以在<a href="http://tinkerpop.apache.org/docs/3.2.6/reference/#gremlin-python" rel="noreferrer">Apache TinkerPop docs</a>中找到有关如何执行此操作的文档。首先安装<code>gremlin-python</code>。假设您使用的是JanusGraph 0.1.1,它使用了TinkerPop 3.2.3,下面是命令:</p>
<pre><code>bin/gremlin-server.sh -i org.apache.tinkerpop gremlin-python 3.2.3
</code></pre>
<p>接下来修改<code>conf/gremlin-server/gremlin-server.yaml</code>以添加<code>gremlin-python</code>脚本引擎:</p>
^{pr2}$
<p>要使用Gremlin Python,需要遍历Gremlin服务器,因此启动JanusGraph<a href="http://docs.janusgraph.org/latest/server.html" rel="noreferrer">pre-packaged distribution</a>:</p>
<pre><code>bin/janusgraph.sh start
</code></pre>
<p>从Gremlin控制台:</p>
<pre><code>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
</code></pre>
<p>安装Gremlin Python驱动程序,再次匹配TinkerPop版本:</p>
<pre><code>pip install gremlinpython==3.2.3
</code></pre>
<p>从Python 3 shell中:</p>
<pre><code>>>> 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
</code></pre>
<p>请记住,当您在pythonshell中工作时,图遍历不会自动迭代,因此您需要确保使用<code>iterate()</code>或<code>next()</code>或{<cd6>}来迭代遍历。</p>