Neo4J自己是由Java語言編寫,Py2Neo提供了Python操控Neo4J的相應API。html
安裝使用pip
便可:node
pip install py2neo
摘自:https://py2neo.readthedocs.io...python
須要向py2neo傳遞一個URI,其格式爲:數據庫
<scheme>://[<user>[:<password>]@]<host>[:<port>]
若是不指明URI,那麼自動鏈接本地的7474端口。bash
name
參數用來指明數據庫的名稱,password
傳遞密碼。code
鏈接好之後,就能夠經過python向neo4j傳遞運行指令:htm
>>> from py2neo import Graph >>> sales = Graph("bolt+s://g.example.com:7687", name="sales", password='***') >>> sales.run("MATCH (c:Customer) RETURN c.name").to_data_frame() # 需安裝pandas
除了直接用run
命令寫入、讀取數據外,咱們還能用面向對象的方式來操做數據:對象
>>> from py2neo import Graph, Node, Relationship >>> g = Graph() # 創建鏈接 >>> a = Node("Person", name="Alice", age=33) # 新建節點 >>> b = Node("Person", name="Bob", age=44) >>> KNOWS = Relationship.type("KNOWS") # 創建節點之間的關係 >>> g.merge(KNOWS(a, b), "Person", "name") # MERGE 命令會自動使用事務進行操做
以及,獲取節點(每一個節點都會有一個隱含的ID,且這個ID是惟一的):事務
>>> graph = Graph() >>> len(graph.nodes) 55691 >>> graph.nodes[1234] (_1234:Person {name: 'Alice'}) >>> graph.nodes.get(1234) (_1234:Person {name: 'Alice'})
Node
類的初始化方法是__init__(self, *labels, **properties)
,所以,咱們實例化Node
傳入的位置參數是該節點的標籤名(一個節點能夠有多個標籤),關鍵詞參數是這個節點的屬性。ip
Relationship
類初始化接收的前三個(或者兩個)位置參數用於指明這個關係的起始節點、關係標籤(無關緊要)、終止節點,關鍵詞參數指明這個關係的屬性。
摘自:https://py2neo.readthedocs.io...
事務是數據庫很重要的一個功能!
建立事務並提交:
>>> from py2neo import Graph, Node, Relationship >>> g = Graph() >>> tx = g.begin() >>> a = Node("Person", name="Alice") >>> tx.create(a) >>> b = Node("Person", name="Bob") >>> ab = Relationship(a, "KNOWS", b) >>> tx.create(ab) >>> tx.commit() >>> g.exists(ab) True
摘自:https://py2neo.readthedocs.io...
py2neo.matching
模塊提供了根據某些標準匹配節點和關係的功能。
對於經過標籤和屬性進行節點的相等匹配:
>>> g = Graph() >>> nodes = NodeMatcher(g) >>> keanu = nodes.match("Person", name="Keanu Reeves").first() >>> keanu Node('Person', born=1964, name='Keanu Reeves')
對於關係的匹配咱們使用RelationshipMatcher
類來進行。
>>> g.nodes.match("Person", name="Alice").all()
>>> g = Graph() >>> g.delete_all() # 清空這個圖數據庫
參考資料: