我正在使用py2neo创建节点,如下所示:
from py2neo import neo4j
graph_db = neo4j.GraphDatabaseService("http://localhost:7474/db/data")
print graph_db.neo4j_version
graph_db.clear()
if not graph_db.get_index(neo4j.Node, "Kiran"):
from py2neo import node,rel
trial = graph_db.create(
node(name="Kiran"),
node(name="teja"),
rel(0, "Brother", 1),
)
#else:
details = graph_db.get_index(neo4j.Node, "Kiran")
print details
get_index返回一些数据,如
Index(Node, u'http://localhost:7474/db/data/index/node/Kiran')
但是当我在浏览器上搜索节点时,它什么都没有给我回复...... 我在这里做错了吗?
我也试图发布一些网络信息如下:
from py2neo import neo4j
from py2neo import node,rel
graph_db = neo4j.GraphDatabaseService("http://localhost:7474/db/data")
def nodepublish(dpid, port, mac):
if graph_db.get_index( neo4j.Node, dpid ) == None:
create = graph_db.create({"DPID": dpid})
print "switch "+str(dpid)+" added to graph"
if graph_db.get_index( neo4j.Node, mac ) == None:
query = neo4j.CypherQuery(graph_db, "MATCH (sw) WHERE sw.DPID = "+str(dpid)+" CREATE (nd {MAC: "+str(mac)+"}) CREATE (sw)-[:connected {PORT: "+str(port)+"}]->(nd)")
print "node "+str(mac)+" added to graph"
当我调用nodepublish()函数时,如
nodepublish(1,1,"aa:aa:aa:aa:aa:aa")
每次创建一个dpid:1的新节点,而不是在get_index没有返回None时跳过if语句。
有人可以帮我解决这个问题吗?
谢谢!
答案 0 :(得分:2)
Point no 1 :确保GraphDatabaseService URI上有一个斜杠。没有它你可能得到不正确的结果。
第2点:您在此处使用旧版索引。通过阅读this,了解您正在使用的索引类型。
我认为您混淆了索引和索引条目。 索引(在此实例中可能称为People
)指向一组条目,每个条目由键值对标识。在每个入口点,您可以引用一个或多个节点。阅读有关旧索引here的更多信息。
您可能希望代码看起来更像这样:
from py2neo import neo4j
graph_db = neo4j.GraphDatabaseService("http://localhost:7474/db/data/")
# Create a "People" index if one doesn't already exist
people = graph_db.get_or_create_index(neo4j.Node, "People"):
# Create two people nodes if they don't already exist
kiran = people.get_or_create("name", "Kiran", {"name": "Kiran"})
teja = people.get_or_create("name", "Teja", {"name": "Teja"})
# Relate the two
brothers, = graph_db.create((kiran, "BROTHER", teja))
print kiran
print teja
print brothers
This page可能有助于代码中的一些细节,因为它描述了您需要的传统索引函数。