2017-10-03 10 views
1

とのNeo4jでそのプロパティのパラメータを持つ複数のノードを作成します。https://neo4j.com/docs/developer-manual/current/cypher/clauses/create/#create-create-multiple-nodes-with-a-parameter-for-their-properties私はPythonで、この非常に同じシナリオを実装しようとしていますPythonの

私がやろうとしていますどのようなことはグラフの中で見つかったすべてのリンクを挿入することがありますウィキペディアのページをノードとして使用していますが、私は作成段階に固執しています。

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) 

Iはノード辞書を印刷する場合、それは参考のために以下上記のNeo4jドキュメントからのリンクに示す非常に同じフォーマットです。

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

しかし私の場合、私は次のエラーメッセージが表示されます。私は1つのステートメントでノードを作成する方法を見つけようとしています

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

を、これは、Pythonを使用していても可能ですか?

+0

この問題は、許可されていないjsonオブジェクトの配列をNeo4jに送信しているという事実に関連しています。 –

+0

こんにちは、私はそれを見ることができますが、私はどのようにPythonを使用してドキュメントのページに例を実装することができないのか分かりません。 – bidi

答えて

0

エラーは、渡しているjson /オブジェクトが原因です。 UNWINDはリストのみを使用します。 「ノード['Page']」を「ノード」にしてみてください。

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['Page']) 

または、より簡単なpythonのneo4jドライバを使用することができます。

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 

希望します。

関連する問題