2016-05-30 13 views
0

Nehmen wir an, wir haben 2 Knoten, Benutzer und Post. Die Beziehung, sagen upvote, als vorhanden sind (: User) - [upvoted] -> (Post)Löschen Sie eine bestimmte Beziehung mit py2neo

Wenn die folgende Abfrage-Ergebnisse in einer nicht-leere Liste, dann möchte ich die Beziehung löschen:

 rel_list = list(graph.match(start_node=user, end_node=post, rel_type="UPVOTED") 
     if len(rel_list) > 0: 
      # delete the relationship from the graph 
     else: 
      # create the relationship 
      rel = Relationship(user, "UPVOTED", post) 
      graph.create_unique(rel) 

Antwort

0

Um Beziehungen zu löschen, verwenden Sie die Methode separate: http://py2neo.org/v3/database.html#py2neo.database.Transaction.separate.

Sie können für einige Diskussion auf, dass Sie einen Blick auf dieses Problem in GitHub nehmen wollen: https://github.com/nigelsmall/py2neo/issues/508

Grüße,

+0

Ich bekomme diesen Fehler: AttributError: 'Graph' Objekt hat kein Attribut 'separate' – karzler007

+0

Das ist, weil 'separate' ist eine Methode des' Transaction' Objekts nicht 'Graph'. Sie müssen eine Transaktion mit 'tx = graph.begin()' öffnen und dann 'tx.separate (yourrelationship)' 'ausführen und schließlich mit' tx.commit() 'commit' – sancho

+0

Aber dann, es wieder den Fehler, dass Graph 'object hat kein Attribut' begin '. Das ist ein bisschen seltsam. – karzler007

0

meine eigene Frage zu beantworten, hoffen, dass diese auch anderen hilft.

rel_list = list(graph.match(start_node=user, end_node=post, rel_type="UPVOTED") 
    if len(rel_list) > 0: 
     # delete the relationship from the graph 
     # fetch the ID of the relationship -> rel_id 
     query = ''' 
     MATCH (a:NeoZotr)-[r:LIKED]->(b:NeoZot) 
     WHERE ID(r) = {x} 
     DELETE r 
     ''' 
     graph.cypher.execute(query,x=rel_id) 
    else: 
     # create the relationship 
     rel = Relationship(user, "UPVOTED", post) 
     graph.create_unique(rel) 

Wenn Sie mit Typeerror am Ende (wie in meinem Fall war), könnte es möglich sein, dass rel_id, dass Sie abgeholt wurden in Unicode-Stil. Übergeben Sie in diesem Fall int (rel_id).

Verwandte Themen