2016-03-19 25 views
2

MERGE (N1:A {name:"A"})-[:r]->(N2:B {name:"B"}) boş bir veritabanı için iki düğüm N1 ve N2 aralarında bir kenar r aralarında oluşturacaktır. Ancak aşağıdaki python kodu 'u yapmıyor ... ama neden? Yapmamalı mı?py2neo graph.merge(), Cypher MERGE'den farklı davranır mı?

from py2neo import Graph, authenticate, rel, Node 

graph = Graph() 

# set up authentication parameters 
authenticate("localhost:7474", <user>, <password>) 

# clear the data base 
graph.delete_all() 

graph.merge(rel(Node("A" , name="A"), "r", Node("B" , name="B"))) 

Bu betiğin çalıştırılması, hala boş bir veritabanında sonuçlanır. Neden budur ve graph.cypher.execute("MERGE ...")'u kullanmadan Py2neo'dan Cypher birleştirme davranışını nasıl alabilirim?

cevap

1

Py2neo'da graph.merge, tüm desende (düğüm, ilişki, diğer düğüm) MERGE kullanmak istediğiniz etiketle ve (isteğe bağlı olarak) özelliklerle tek bir düğümü eşleştirir veya oluşturur.

Cypher MERGE ifadesi için kullandığınız desen, Cypher dışındaki Py2neo'da desteklenmiyor gibi görünmüyor.

0

İki düğümün ilişkisini nasıl birleştireceğinize dair bir örnek.

from py2neo import Graph, authenticate, Relationship, Node 

server = "localhost:7474" 

# set up authentication parameters 
authenticate(server, <user>, <password>) 

graph = Graph("{0}/db/data".format(server)) 

# merge nodes and relationship 
node1 = Node("A", name="A") 
node2 = Node("B", name="B") 
node1_vs_node2 = Relationship(node1, "r", node2) 
graph.merge(node1_vs_node2) 

sonucudur: Nodes A and B related after a merge