校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Python使用Py2neo創建Neo4j的節點和關系

Python使用Py2neo創建Neo4j的節點和關系

熱門標簽:ai電話機器人哪里好 湛江智能外呼系統廠家 百度地圖標注沒有了 長沙高頻外呼系統原理是什么 宿遷星美防封電銷卡 地圖標注審核表 ai電銷機器人源碼 西藏房產智能外呼系統要多少錢 外呼并發線路

Neo4j是一款開源圖數據庫,使用Python語言訪問Neo4j可以使用Py2neo。本文介紹了使用Py2neo訪問Neo4j,批量創建節點和關系的方法。Py2neo提供了直接執行Cypher語句的方法,也提供了諸如Node、Relationship、Path一系列的數據結構,在不同的場景下可以靈活使用。

​本文使用的Py2neo是2021.1之后的版本,手冊請戳這里:
The Py2neo Handbook

一、安裝Py2neo

使用pip安裝Py2neo,執行:

pip install py2neo

查看已安裝的Py2neo是什么版本的:

pip show py2neo

二、連接Neo4j數據庫

本文中會用到多種數據類型,在此一并引用

import numpy as np
import pandas as pd
from py2neo import Node,Relationship,Graph,Path,Subgraph

配置Neo4j數據庫的訪問地址、用戶名和密碼

neo4j_url = '訪問地址'
user = '用戶名'
pwd = '密碼'

在此時間段之前訪問數據庫的方式為:

graph = Graph(neo4j_url, username=user, password=pwd)

在此時間段之后的版本訪問數據庫的方式為(就是這么不兼容):

graph = Graph(neo4j_url,  auth=(user, pwd))

1. 使用graph.run執行Cypher語句創建節點

如果熟悉Cypher語句的話,可以通過使用graph.run執行Cypher語句來實現創建節點等操作,方法如下所示:

cypher_ = "CREATE (:Person {name:'王王', age:35, work:'腳本之家}),\

(:Person {name:'李李', age:20, work:'腳本之家})"
graph.run(cypher_)

這樣就在Neo4j中創建了兩個label為Person的節點,第一個節點的name屬性為“王王”,age屬性為35,work屬性為“腳本之家”,第二個節點的name屬性為“李李”,age屬性為20,work屬性為“宇腳本之家”。

同樣,可以通過調用graph.run執行Cypher語句創建關系。

cypher_ = "MATCH (from:Person{name:'王王'}),\

(to:Person{name:'李李'}) MERGE (from)-[r:同事]->(to)"
graph.run(cypher_)

這樣在Neo4j中就有了具有同事關系的兩個Person節點。

2. 使用Node數據結構創建節點

Py2neo也提供graph.create方法來創建節點和關系

node = Node("Person", name="李李", age=20, work="腳本之家")
graph.create(node)

與執行Cypher語句的效果相同,在Neo4j中創建了一個Person節點。

需要注意的是,這兩種創建方法,如果反復執行的話,是會在Neo4j中創建出重復的節點的,即name、age、work屬性完全一樣,但在Neo4j中的id不一樣的多個節點。

3. 使用Node、Relationship和Subgraph數據結構創建節點和關系

上面兩種方法都是一次創建一個節點或者一個關系,Py2neo也提供了批量創建節點和關系的方法,而且性能更優。下面就以下圖中的圖譜為例,使用Py2neo提供Node、Relationship和Subgraph數據結構在Neo4j中創建節點和關系。

首先創建一些label為Person的節點,即Node對象,第一個參數是label,屬性按key=value依次作為參數傳入。如果節點有多個label,可以用Node.add_label("label_text")來追加label。

node1 = Node("Person", name="王王", age=35, work="腳本之家")
node2 = Node("Person", name="李李", age=20, work="腳本之家")
node3 = Node("Person", name="張張", age=30, work="腳本之家")
node4 = Node("Person", name="趙趙", age=45, work="月亮中學")
node4.add_label("Teacher")
node5 = Node("Person", name="劉劉", age=20, work="地球電子商務公司")

再創建一些label為Location的節點

node6 = Node("Location", name="南京") 
node7 = Node("Location", name="江寧區") 
node8 = Node("Location", name="祿口機場") 

建立一些Person和Person節點之間的關系,Neo4j中的關系是有方向的,所以Relationship第一個參數為起始節點,第三個參數是結束節點,而第二個節點為關系的類型。這里創建的同事、鄰居的關系為雙向的,老師、學生的關系為單向。

relation1 = Relationship(node1, "同事", node2)
relation2 = Relationship(node2, "同事", node1)

relation3 = Relationship(node2, "同事", node3)
relation4 = Relationship(node3, "同事", node2)

relation5 = Relationship(node3, "鄰居", node4)
relation6 = Relationship(node4, "鄰居", node3)

relation7 = Relationship(node4, "學生", node5)
relation8 = Relationship(node5, "老師", node4)

創建一些Location和Location節點之間的關系,地域之間的包含關系為單向。

relation9 = Relationship(node6, "包含", node7)
relation10 = Relationship(node7, "包含", node8)

創建Person節點和Location節點之間的關系,這里“到訪”的關系是有屬性的,date表示到訪的日期,stay_hours表示停留的時間。可以使用一個key:value的字典數據結構保存屬性,再賦予關系

properties1={'date':'2021-7-16','stay_hours':1}
relation11 = Relationship(node2, "到訪", node8, **properties1)

properties2={'date':'2021-7-19','stay_hours':4}
relation12 = Relationship(node5, "到訪", node8, **properties2)

然后將以上所有節點和關系組成Subgraph

node_ls = [node1, node2, node3, node4, 
           node5, node6, node7, node8]
relation_ls = [relation1, relation2, relation3, relation4, 
               relation5, relation6, relation7, relation8, 
               relation9, relation10, relation11, relation12]
subgraph = Subgraph(node_ls, relation_ls)

最后通過事務類Transaction提交,批量創建這些節點和關系。這里tx.create并沒有真正創建節點和關系,直到graph.commit才一次性提交到Neo4j進行創建。

tx = graph.begin() 
tx.create(subgraph)
graph.commit(tx)

重復執行上面的命令,不會創造出重復的節點和關系。這一點手冊中有說明:“subgraph中的已經和數據庫綁定的實體將保持不變,那些沒有綁定的將在數據庫中新建并綁定上。”

create(subgraph) Create remote nodes and relationships that correspond to those in a local subgraph. Any entities in subgraph that are already bound to remote entities will remain unchanged, those which are not will become bound to their newly-created counterparts.

三、性能對比

做一個簡單的實驗粗略地對比逐個創建和批量創建的時間開銷。在Neo4j為空數據庫的情況下,分別采用逐個創建和批量創建的方法創建10000個節點,每個節點有name和age兩個屬性,都是隨機生成的,使用jupyter notebook的%%time命令計算時間開銷。

import random
N = 10000

逐個創建節點:

%%time
for i in range(N):
    random_name = "P"+str(round(random.random()*N*2))
    random_age = round(random.random()*15)
    node = Node("Person", name=random_name, age=random_age)
    graph.create(node)

CPU times: user 50.3 s, sys: 4.19 s, total: 54.5 s
Wall time: 5min 16s

批量創建節點:

%%time
node_ls = []
for i in range(N):
    random_name = "P"+str(round(random.random()*N*2))
    random_age = round(random.random()*15)
    node = Node("Person", name=random_name, age=random_age)
    node_ls.append(node)

subgraph = Subgraph(node_ls, [])
tx = graph.begin() 
tx.create(subgraph)
graph.commit(tx)

CPU times: user 448 ms, sys: 75.5 ms, total: 523 ms
Wall time: 1.46 s

實驗中也發現,只是創建節點的話,批量創建方法的時間開銷幾乎是線性增長的,當一次性提交10萬個節點的創建任務時,時間開銷大約在4.5秒。
在使用Py2neo構建圖譜時,盡可能使用批量創建方法。先創建節點(Node)對象、關系(Relationship)對象,再構成子圖(Subgraph),最后利用事務類一次提交創建。
下一篇將介紹如何運用Py2neo查詢節點、關系和路徑。

這篇關于用Py2neo創建Neo4j的節點、關系及路徑的文章就先介紹到這了,更多相關Py2neo內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python使用py2neo查詢Neo4j的節點、關系及路徑
  • Python使用py2neo操作圖數據庫neo4j的方法詳解
  • Python使用Py2neo創建Neo4j的節點和關系
  • Python接口自動化之淺析requests模塊get請求
  • 用python爬取分析淘寶商品信息詳解技術篇
  • 用Python做一個嗶站小姐姐詞云跳舞視頻
  • python實現日歷效果
  • python利用文件讀寫編寫一個博客

標簽:林芝 漯河 寧夏 南平 盤錦 大同 普洱 海南

巨人網絡通訊聲明:本文標題《Python使用Py2neo創建Neo4j的節點和關系》,本文關鍵詞  Python,使用,Py2neo,創建,Neo4j,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python使用Py2neo創建Neo4j的節點和關系》相關的同類信息!
  • 本頁收集關于Python使用Py2neo創建Neo4j的節點和關系的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产传媒日韩欧美成人| 日韩电影在线看| 国产性天天综合网| 中文字幕一区二区三区不卡| 亚洲欧美日韩一区二区三区在线观看| 精品少妇一区二区三区免费观看 | 国产精品国产自产拍在线| 国产人久久人人人人爽| 国产精品免费久久久久| 欧美高清视频www夜色资源网| 国产麻豆成人精品| 丝瓜av网站精品一区二区| 亚洲永久免费av| 日韩av在线播放中文字幕| 色爱区综合激月婷婷| 国产精品一区二区视频| 日韩在线卡一卡二| 亚洲精品乱码久久久久久久久| 精品福利av导航| 色婷婷一区二区| 精品久久久久99| 久久久99精品免费观看不卡| 日韩一级大片在线观看| 欧美精品一区二区三区视频| 精品成人免费观看| 亚洲精品国产精华液| 亚洲成av人综合在线观看| 亚洲综合999| 国产精品一二三四区| 国产一区二区视频在线| 麻豆久久久久久久| 97久久精品人人爽人人爽蜜臀| 日韩欧美成人激情| 亚洲一区在线视频| 在线观看日韩av先锋影音电影院| 最新国产精品久久精品| 麻豆成人综合网| 日韩一区二区三免费高清| 免费成人在线影院| 欧美日本一区二区| 免费在线观看日韩欧美| 亚洲欧美区自拍先锋| 亚洲精品一区二区在线观看| 在线欧美小视频| 亚洲男女一区二区三区| 本田岬高潮一区二区三区| 日本一区二区三区国色天香| 高清在线观看日韩| 亚洲电影你懂得| 一区二区三区欧美日韩| 欧美一区二区三区四区久久 | 成人手机电影网| 国产精品色噜噜| www久久久久| 国产午夜亚洲精品不卡| 欧美极品少妇xxxxⅹ高跟鞋| 欧洲一区二区av| 亚洲伊人色欲综合网| 欧美手机在线视频| 奇米色一区二区| 中文字幕国产一区| 91精品欧美福利在线观看| 91色视频在线| 三级不卡在线观看| 日本一二三不卡| 欧美午夜精品久久久久久孕妇 | 亚洲精品国产一区二区三区四区在线| 日韩女优毛片在线| 国产精品免费网站在线观看| 九九九精品视频| 欧美一区二区私人影院日本| 一区二区激情小说| 成人av电影免费观看| 成人高清视频在线观看| 中文字幕视频一区| 国产欧美精品区一区二区三区| 精品国产乱码久久久久久牛牛| 26uuu久久天堂性欧美| 中文字幕一区二区三区四区不卡| 国产精品综合在线视频| 国产精品传媒在线| 国产女同互慰高潮91漫画| 久久久一区二区| 久久久久久久网| 国产精品视频线看| 亚洲日本丝袜连裤袜办公室| 国产精品第13页| 一区二区三区在线播| 亚洲欧美色图小说| 日本欧美一区二区三区| 久久狠狠亚洲综合| 99久久99久久精品免费看蜜桃| 97久久精品人人澡人人爽| av电影天堂一区二区在线| 色妞www精品视频| 日韩一级大片在线观看| 国产亚洲综合性久久久影院| 亚洲精品写真福利| 久久精品噜噜噜成人av农村| 不卡影院免费观看| 欧美日韩一区二区三区四区五区| 91影院在线观看| 欧美日韩在线播放一区| 亚洲精品一区二区三区99| 亚洲欧美经典视频| 国产麻豆午夜三级精品| 一本一道综合狠狠老| 久久先锋影音av| 亚洲一级电影视频| kk眼镜猥琐国模调教系列一区二区 | 亚洲福利一二三区| 国产91在线观看丝袜| 日韩亚洲欧美高清| 亚洲高清视频中文字幕| 国产成人精品三级| 久久综合久久99| 青青草97国产精品免费观看无弹窗版| 波多野结衣中文字幕一区| 欧美一级片在线观看| 三级欧美韩日大片在线看| 一本色道久久加勒比精品 | 成人自拍视频在线| 欧美日韩国产首页| 亚洲午夜电影在线| 欧美日韩视频在线观看一区二区三区 | 美女www一区二区| 欧美一区二区日韩| 久久精品国产一区二区三| 91麻豆精品91久久久久同性| 午夜av电影一区| 欧美精品一区二区三区久久久| 日韩激情中文字幕| 久久人人超碰精品| 国产91精品久久久久久久网曝门 | 国产精品1024| 欧美国产日本韩| 91免费视频大全| 樱花草国产18久久久久| 在线播放视频一区| 国产精品资源在线| 一区二区三区在线播放| 欧美精品久久99| 国产91在线看| 亚洲午夜激情av| 久久久噜噜噜久久中文字幕色伊伊| 国产美女在线精品| 亚洲成人午夜电影| 久久综合久久99| 在线播放91灌醉迷j高跟美女 | 国产在线精品视频| 亚洲乱码国产乱码精品精小说| 欧美一级黄色录像| 一本色道久久综合亚洲精品按摩| 日本视频免费一区| 一区二区三区国产精华| 久久久久国色av免费看影院| 欧美唯美清纯偷拍| 色天使色偷偷av一区二区| 国产福利一区二区三区视频在线| 怡红院av一区二区三区| 一区在线中文字幕| 欧美激情一区不卡| 久久久99久久| 久久久久久97三级| 久久嫩草精品久久久精品| 欧美一卡2卡3卡4卡| 欧美无砖专区一中文字| 欧美在线一区二区| 色婷婷av一区| 欧美日韩亚洲高清一区二区| 91精彩视频在线观看| 91麻豆精品一区二区三区| 91色在线porny| 色94色欧美sute亚洲线路二 | 亚洲第一电影网| 日韩高清不卡一区| 经典三级视频一区| 国产精品一区二区久久不卡| 国产+成+人+亚洲欧洲自线| 国产不卡免费视频| 91麻豆自制传媒国产之光| 欧美撒尿777hd撒尿| 91精品欧美一区二区三区综合在 | 国产成人综合在线| 99国产精品久久久久久久久久久| 色综合咪咪久久| 欧美日韩国产另类一区| 精品久久一二三区| 亚洲色图在线看| 日本大胆欧美人术艺术动态 | 国产精品久久久久精k8| 亚洲国产va精品久久久不卡综合 | 欧美激情综合网| 首页国产丝袜综合| 成人午夜激情片| 日韩欧美电影一区| 亚洲影视在线播放| 成人黄色电影在线| 欧美成人video| 夜夜夜精品看看|