1

对不起,如果这个问题太愚蠢而无法问...我是 Python+Django+Bulbs+Neo4j 的新手。

我正在尝试——没有成功——在使用 Python+Django shell 时获取 g.gremlin.execute() 生成的整数,如下所述。

首先是 Neo4j 的 Gremlin 控制台中的查询:

gremlin> g.v(2).out
==> v[6]
==> v[4]
==> v[8]
==> v[7]
gremlin> g.v(2).out.count()
==> 4

我打算在 Python+Django shell 中得到这个结果,将它传递给一个变量,如下所示:

>>> from bulbs.neo4jserver import Graph
>>> from bulbs.model import Node,Relationship
>>> g = Graph()
>>> sc = " g.v(vertex_id).out.count()"
>>> params = dict(vertex_id = 2)
>>> val = g.gremlin.execute(sc,params)
>>> val
<bulbs.neo4jserver.client.Neo4jResponse object at 0x243cfd0>

从现在开始我不能再进一步了。

>>> val.one()
<bulbs.neo4jserver.client.Neo4jResult object at 0x2446b90>
>>> val.one().data
>>> val.one().results
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'Neo4jResult' object has no attribute 'results'

谁能告诉我我做错了什么?非常感谢!

4

1 回答 1

1

原始结果数据将位于 Result 对象的raw属性中:

>>> from bulbs.neo4jserver import Graph
>>> from bulbs.model import Node,Relationship
>>> g = Graph()
>>> script = " g.v(vertex_id).out.count()"
>>> params = dict(vertex_id = 2)
>>> resp = g.gremlin.execute(script,params)
>>> result = resp.one()
>>> result.raw

注意:result.data返回元素的属性数据,因此它将为空,除非您返回顶点或边,即 Neo4j 用语中的节点或关系。

看...

要查看 Neo4j Server 在服务器响应中返回的内容,您可以输出Response标头和内容:

>>> from bulbs.neo4jserver import Graph
>>> from bulbs.model import Node,Relationship
>>> g = Graph()
>>> script = "g.v(vertex_id).out.count()"
>>> params = dict(vertex_id = 2)
>>> resp = g.gremlin.execute(script,params)
>>> resp.headers
>>> resp.content

如果您将 loglevel 设置为DEBUGin Config,您将能够看到每个请求发送到服务器的内容。启用后DEBUG,灯泡还会设置对象的raw属性(不要与始终设置在对象上Response的属性混淆)。将包含原始服务器响应:rawResultResponse.raw

>>> from bulbs.neo4jserver import Graph, DEBUG
>>> from bulbs.model import Node,Relationship
>>> g = Graph()
>>> g.config.set_logger(DEBUG)
>>> script = " g.v(vertex_id).out.count()"
>>> params = dict(vertex_id = 2)
>>> resp = g.gremlin.execute(script,params)
>>> resp.raw

看...

要关闭DEBUG,请将日志级别设置回ERROR

>>> from bulbs.neo4jserver import ERROR
>>> g.config.set_logger(ERROR)

看...

于 2013-09-16T04:38:23.663 回答