2017-10-03 6 views
1

Je suis en train de mettre en œuvre ce scénario même en Python: https://neo4j.com/docs/developer-manual/current/cypher/clauses/create/#create-create-multiple-nodes-with-a-parameter-for-their-propertiesCréer plusieurs noeuds avec un paramètre pour leurs propriétés en Neo4j avec Python

Ce que je suis en train de faire est d'insérer dans un graphique tous les liens trouvés dans une page wikipedia en tant que nœuds mais je suis bloqué à l'étape de la création.

import wikipedia 
from py2neo import Graph 

first_page = "United Kingdom" 

page = wikipedia.page(first_page) 

page_name = page.title 
page_id = page.pageid 
links = page.links 

graph = Graph(bolt=True, password="mypassword") 

nodes = {} 
nodes['Page'] = list({"title" : c} for c in page.links) 
node = "UNWIND {json} as data CREATE (n) SET n = data" 
graph.run(node, json=nodes) 

Si j'imprimer les noeuds dictionnaire, il est dans le format même indiqué dans le lien ci-dessus de la documentation Neo4j, ci-dessous pour référence.

{ 
    "props" : [ { 
    "name" : "Andres", 
    "position" : "Developer" 
    }, { 
    "name" : "Michael", 
    "position" : "Developer" 
    } ] 
} 

mais dans mon cas, je reçois le message d'erreur suivant:

py2neo.status.CypherTypeError: Property values can only be of primitive types or arrays thereof.

Je suis en train de trouver un moyen de créer des noeuds avec une seule instruction, est-ce possible en utilisant Python?

+0

Le problème est lié au fait que vous envoyez un tableau d'objets json à Neo4j, ce qui n'est pas autorisé. –

+0

Salut Bruno, je peux le voir, je ne comprends toujours pas comment j'ai pu implémenter l'exemple sur leur page de documentation en utilisant Python. – bidi

Répondre

0

L'erreur est due au json/objet que vous passez. UNWIND liste d'utilisations seulement. Essayez de passer "nœuds ['Page']" mais pas "nœuds" comme ci-dessous. OU vous pouvez utiliser le pilote neo4j de python, ce qui est plus facile.

import wikipedia 
from neo4j.v1 import GraphDatabase, basic_auth 

driver = GraphDatabase.driver("bolt://localhost:5687",auth=basic_auth("neo4j","neo")) 
session = driver.session() 

first_page = "United Kingdom" 

page = wikipedia.page(first_page) 

page_name = page.title 
page_id = page.pageid 
links = page.links 

nodes = list({"title" : c} for c in page.links) 

query = "UNWIND {nodes} as data CREATE (n:Test) SET n = data;" 

result = session.run(query,nodes=nodes) 
print result 

Espérons que cela aide!