1. 程式人生 > >py2neo(2) --操作 Neo4j 圖資料庫

py2neo(2) --操作 Neo4j 圖資料庫

#encoding:utf-8 #在 database 模組中包含了和 Neo4j 資料互動的 API,最重要的當屬 Graph,它代表了 Neo4j 的圖資料庫, #同時 Graph 也提供了許多方法來操作 Neo4j 資料庫。 Graph 在初始化的時候需要傳入連線的 URI, #初始化引數有 bolt、secure、host、http_port、https_port、bolt_port、user、password,  #詳情說明可以參考:http://py2neo.org/v3/database.html#py2neo.database.Graph。

from py2neo import Graph,Node,Relationship # #Graph()例項化 graph=Graph("http://localhost:7474",username="neo4j",password="。。。。。。") # #可以利用 create() 方法傳入 Subgraph 物件來將關係圖新增到資料庫中 #a = Node('Person',name='Alice') #b = Node('Person', name='Bob') #r=Relationship(a,'knows',b) #s=a|b|r  #graph.create(s) # #可以單獨新增Node或Relationship #a = Node('Person', name='Mike') #graph.create(a) #b = Node('Person', name='Jack') #ab = Relationship(a, 'KNOWS', b) #graph.create(ab) #可以利用 data() 方法來獲取查詢結果 #data=graph.run("match (p:Person) return p.name ").data() #print(data) # [{'p.name': 'bob'}, {'p.name': 'Alice'}, {'p.name': 'Bob'}, {'p.name': 'Jack'}, {'p.name': 'Jack'}, {'p.name': 'Jack'}, {'p.name': 'Mike'}, {'p.name': 'Jack'}, {'p.name': 'Mike'}, {'p.name': 'Mike'}, {'p.name': 'Mike'}]

## 以字典列表的形式返回查詢的結果資料  #g.run('match(p:明星) return *').data() ## 轉化為pandas資料 #g.run('match(p:明星) return p.name,p.born').to_data_frame() ## 轉化為numpy資料 #g.run('match(p:明星) return p.name,p.born').to_ndarray()   #轉換為DataFrame #from pandas import DataFrame #df=DataFrame(data) #print(df) #a = Node('Person', name='Alice', age=21, location='廣州') #b = Node('Person', name='Bob', age=22, location='上海') #c = Node('Person', name='Mike', age=21, location='北京') #r1 = Relationship(a, 'KNOWS', b) #r2 = Relationship(b, 'KNOWS', c) #graph.create(a) #graph.create(r1) #graph.create(r2)

#可以通過 run() 方法直接執行 CQL 語句 #data = graph.run('MATCH (p:Person) RETURN p LIMIT 5') #print(list(data))

#更改節點或者關係的屬性 :

relationships=graph.relationships print(relationships[63]) relationships[63]['time']='2018/08/31' graph.push(relationships[63]) graph.push(可以是關係也可以是節點)

# 通過屬性值來查詢節點和關係(find,find_one)

# 通過節點/關係查詢相關聯的節點/關係

#刪除節點  沒有關係 

g.run('match(p:Person{name:"alice"}) delete p')

# 刪除節點 有 關係的 

g.run('match(p:Person{name:"alice"}) detach delete p')

# OGM 類似於 ORM,意為 Object Graph Mapping,這樣可以實現一個物件和 Node 的關聯 # #可以用它來結合 Graph 查詢 from py2neo import Graph  from py2neo.ogm import GraphObject,Property class Person(GraphObject):     __primarykey__='name'     name=Property()     age=Property()     location=Property() person=Person.match(graph).where(age=21).first() print(person.__ogm__.node) person.age=22 print(person.__ogm__.node) graph.push(person)