【发布时间】:2016-07-20 14:27:35
【问题描述】:
我如何使用结果并将其转换为来自graph.run 的节点或关系,例如。
result = graph.run('match (x:Person) return x')
如何将结果转换为 Py2neo v3 节点/关系?
【问题讨论】:
标签: python-2.7 neo4j py2neo
我如何使用结果并将其转换为来自graph.run 的节点或关系,例如。
result = graph.run('match (x:Person) return x')
如何将结果转换为 Py2neo v3 节点/关系?
【问题讨论】:
标签: python-2.7 neo4j py2neo
从查询中获取节点的最简单方法是使用evaluate 而不是run:
my_node = graph.evaluate('match (x:Person) return x')
此方法从返回的第一条记录中返回第一个值。在这种情况下,您的节点。
http://py2neo.org/v3/database.html#py2neo.database.Graph.evaluate
【讨论】:
graph.evaluate()检索关系??
my_rel= graph.evaluate('match (:Person {name:"Foo"})-[rel]->(:Person {name:"Bar"}) return r')
rel = graph.evaluate("match (x:XaudioUser)-[m:MAINTAINS]->(p) return m") print rel graph.delete(rel) 在运行这个我得到ConstraintError: Cannot delete node<3>, because it still has relationships. To delete this node, you must first delete its relationships. 因为关系也包含节点,但是我只想检索关系
graph.separate(rel)。谢谢,我只是py2neo的初学者
对于Py2neo 1.6.7,您可以使用GraphDatabaseService 的方法find 迭代一组标记节点,可选择按属性键和值进行过滤,例如:
from py2neo import neo4j
# pass the base URI of your neo4j database as arg
graph_db = neo4j.GraphDatabaseService('http://localhost:7474/db/data/')
resultset = graph_db.find('Person')
对于Py2neo 3.0,您可以使用Graph 的方法find,该方法生成所有具有给定标签的节点,可选择按属性键和值进行过滤。因此,对于您的示例:
from py2neo import Graph
graph_db = Graph("http://localhost:7474/db/data/")
resultset = graph_db.find('Person')
最后,来自官方文档的一个重要警告:
还要注意,Py2neo 是专门在 Linux 下开发和测试的 使用标准 CPython 发行版。虽然其他操作系统和 Python 发行版也可以工作,但不提供对这些的支持。
【讨论】:
Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: cannot import name neo4j
>>> from py2neo import neo4j Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: cannot import name neo4j
另一种方法是根据 cypher.execute 返回的生成器生成列表。
result = graph.cypher.execute('match (x:Person) return x')
nodes = [n for n in result]
请注意,像这样查询的节点是记录。要访问真实节点,请选择每个对象的属性 r。 :
l_nodes = map(lambda node : node.r, nodes)
【讨论】: