節點的建立要用到py2neo.node,建立節點的時候要定義它的節點型別(label)以及乙個基本屬性(property,包括property_key和property_value)。以下**為建立了兩個測試節點。
test_node_1 = node("person",name = "test_node_1") # 注意:這裡不要加「label=」,否則label會以屬性的形式展示,而非標籤
test_node_2 = node("person",name = "test_node_2")
neo_graph.create(test_node_1)
neo_graph.create(test_node_2)
這兩個節點的型別(label)都是person,而且都具有屬性(property_key)為name,屬性值(property_value)分別為"test_node_1","test_node_2"。
節點間關係的建立
節點間的關係(relationship)是有向的,所以在建立關係的時候,必須定義乙個起始節點和乙個結束節點。值得注意的是,起始節點可以和結束節點是同乙個點,這時候的關係就是這個點指向它自己。
node_1_call_node_2 = relationship(test_node_1,'call',test_node_2)
node_1_call_node_2['count'] = 1
node_2_call_node_1 = relationship(test_node_2,'call',test_node_1)
node_2_call_node_1['count'] = 2
neo_graph.create(node_1_call_node_2)
neo_graph.create(node_2_call_node_1)
如以上**,分別建立了test_node_1指向test_node_2和test_node_2指向test_node_1兩條關係,關係的型別為"call",兩條關係都有屬性count,且值為1。
注意:如果建立關係的時候,起始節點或者結束節點不存在,則在建立關係的同時建立這個節點。
節點/關係的屬性賦值以及屬性值的更新
節點和關係的屬性初始賦值在前面節點和關係的建立的時候已經有了相應的**,在這裡主要講述一下怎麼更新乙個節點/關係的屬性值。
我們以關係建立裡的 node_1_call_node_2 為例,讓它的count加1,再更新到圖資料庫裡面。
node_1_call_node_2['count']+=1
neo_graph.push(node_1_call_node_2)
更新屬性值就使用push函式來進行更新即可。
通過屬性值來查詢節點和關係(find,find_one)
通過find和find_one函式,可以根據型別和屬性、屬性值來查詢節點和關係。
示例如下:
find_code_1 = neo_graph.find_one(
label="person",
property_key="name",
property_value="test_node_1"
)print find_code_1['name']
find和find_one的區別在於:
find_one的返回結果是乙個具體的節點/關係,可以直接檢視它的屬性和值。如果沒有這個節點/關係,返回none。
find返回的結果是乙個游標cursors,必須要通過迴圈取到所找到的所有節點/關係。
通過節點/關係查詢相關聯的節點/關係
如果已經確定了乙個節點或者關係,想找到和它相關的關係和節點,就可以使用match和match_one。
find_relationship = neo_graph.match_one(start_node=find_code_1,end_node=find_code_3,bidirectional=false)
print find_relationship
如以上**所示,match和match_one的引數包括start_node,relationship,end_node中的至少乙個。
bidirectional引數的意義是指關係是否可以雙向。
如果為false,則起始節點必須為start_node,結束節點必須為end_node。如果有relationship引數,則一定按照relationship對應的方向。
如果為true,則不需要關心方向問題,會把兩個方向的資料都返回。
match_relation = neo_graph.match(start_node=find_code_1,bidirectional=true)
for i in match_relation:
print i
i['count']+=1
neo_graph.push(i)
如以上**所示,查詢和find_code_1相關的關係。
match裡面的引數只寫了start_node,bidirectional的值為true,則不會考慮方向問題,返回的是以find_code_1為起始節點和結束節點的所有關聯關係。
如果,bidirectional的值為false,則只會返回以find_code_1為起始節點的所有關聯關係。
可以利用 run 方法來執行cypher語句,返回的是游標cursors,cursors必須通過遍歷來展示結果
find_rela = neo_graph.run("match (n:person) return n")
for i in
find_rela :
print i
py2neo 建立關係 py2neo詳細介紹第一章
1.1 節點和關係的物件 官網的例子,建立兩個節點,並為兩個節點建立關係。from py2neo.data import node,relationship a node person name alice b node person name bob ab relationship a,knows...
py2neo基礎學習
neo4j雖然有cql,但是py2neo對cql有一定的封裝,支援一些簡單的操作。學習連線 coding utf8 from py2neo import graph,node,relationship def find relationship start node,end node,test gr...
py2neo 基本用法
coding utf 8 from py2neo import graph,node,relationship 連線neo4j資料庫,輸入位址 使用者名稱 密碼 建立結點 test node 2 node label ru yi zhuan name 皇帝 test node 1 node labe...