2013-09-22 2 views
0

Je veux insérer des données à partir d'un fichier texte en utilisant Neo4j py2neo.But est leur façon de vérifier avant de créer le noeud qu'il exist.Is déjà leur toute py2neo voie à CREATE UNIQUE Par exempleinsérer des données dans Neo4j en utilisant py2neo

créer le noeud A à B créer le noeud A à C

Alors que seul le noeud A doit être créé et relié à B et C

insert_data.py

from pprint import pprint 
from py2neo import neo4j,node, rel, cypher 
#------------------------------------------------------------------------------ 

f = open('sample_dataset') 
lines = f.readlines() 
graph_db = neo4j.GraphDatabaseService() 
print graph_db.get_reference_node() 
try: 
    for row in lines:  
     from_node = row.split('\t')[0].strip() 
     to_node = row.split('\t')[1].strip() 
     graph_db.create(
         node(name=from_node), 
         node(name=to_node))        
except Exception as e: 
    print e 

donnees.txt:

101 102 
101 104 
101 107 
101 125 
101 165 
101 168 
101 170 
101 176 
101 180 
101 181 
101 182 
101 209 
101 210 
101 248 
101 306 
101 329 
101 330 
101 340 
101 349 
101 352 
101 355 
101 356 
101 359 
101 364 
101 365 
101 368 
101 372 
101 373 
101 383 
101 433 
101 438 
101 439 
101 441 
101 448 
101 466 
101 471 
101 484 
101 526 

Répondre

1

Il existe plusieurs façons de gérer l'unicité par py2neo et UNIQUE est pris en charge CREATE fois par requêtes Cypher directes et par plusieurs méthodes wrapper. J'ai récemment écrit un billet de blog sur tout ce sujet afin que vous pouvez probablement obtenir quelques conseils d'ici:

http://blog.safaribooksonline.com/2013/08/07/managing-uniqueness-with-py2neo/

Hope this helps.

2

Une façon de le faire est avec CYPHER 2.0 et py2neo. Dans votre code remplacez simplement

graph_db.create 

avec cela, où le début de la chaîne de requête dit CYPHER 2.0, qui prend en charge MERGE:

query = neo4j.CypherQuery(graph_db, 
     """CYPHER 2.0 
      merge (n {name: {from}}) 
      merge(m {name: {to}}) 
      create unique (n)-[:relation]->(m)""") 
result = query.execute(from = from_node, to = to_no) 

Avec n fusion, n ne sera créé si ce n'est pas dans la base de données. J'espère que cela aide.

+0

Merci pour cela, j'ai passé la dernière heure à essayer de comprendre comment faire des relations directionnelles dans Paths via py2neo. – vly

Questions connexes