py2neo创建关系方法

py2neo官方给出的创建关系方法如下:

from py2neo.data import Node, Relationship, Graph

graph = Graph("http://localhost:7474",auth=("neo4j","123456"))

a = Node("Person", name="Alice")

b = Node("Person", name="Bob")

ab = Relationship(a, "KNOWS", b)

graph.create(ab)

按照上面代码运行,结果为创建了两个节点和一个关系。如果数据库中已经存在name为Alice和Bob的两个节点,该段代码并不能识别原有节点,而是会在原来两个节点上增加两个节点并建立关系。

py2neo识别原有节点并创建关系

先假设我们的Person节点的name属性唯一。我们先匹配出name为Alice和Bob的两个节点,然后创建关系,代码如下:

a_have=graph.nodes.match("Person",name="Alice")

b_have=graph.nodes.match("Person",name="Bob")

rel_a=Relationship(a_have,"likes",b_have)

graph.create(rel_a)

运行后,两个节点之间并没有如愿的创建关系。

网上找了很多资料都没发现有解决该问题的答案。现猜想会不会是匹配的a_have和创建时的a类型不一致,type()函数返回的结果显示,a_have返回的结果类型是“py2neo.matching.NodeMatch”,而a的类型是“py2neo.data.Node”。两个NodeMatch自然不能创建关系。

找到问题后,我们可以用first把node从nodematch中提出来,代码如下:

a_have=graph.nodes.match("Person",name="Alice").first()

b_have=graph.nodes.match("Person",name="Bob").first()

rel_a=Relationship(a_have,"likes",b_have)

graph.create(rel_a)

运行后,原数据库中的两个node就创建了关系,并没有再生成另外两个节点。

py2neo批量创建关系

批量创建需要用到Subgraph。先在空白数据库中批量创建节点,代码如下:

from py2neo import Node,Relationship,Graph,Subgraph

graph = Graph("http://localhost:7474",auth=("neo4j","123456"))

a = Node("Person", name="Alice")

b = Node("Person", name="Bob")

c = Node("Person", name="Jim")

d = Node("Person", name="Nacy")

nodes=Subgraph([a,b,c,d])

graph.create(nodes)

现在数据库中存在了4个Person节点,通过下面代码即可批量创建关系了:

a=graph.nodes.match("Person",name="Alice").first()

b=graph.nodes.match("Person",name="Bob").first()

c=graph.nodes.match("Person",name="Jim").first()

d=graph.nodes.match("Person",name="Nacy").first()

rel_a=Relationship(a,"likes",b)

rel_b=Relationship(b,"likes",a)

rel_c=Relationship(c,"likes",d)

rel_d=Relationship(d,"likes",c)

A=Subgraph(relationships=[rel_a,rel_b,rel_c,rel_d])

graph.create(A)

py2neo 创建关系_py2neo在已有节点上批量创建关系相关推荐

  1. [投稿]通过Web界面在多台服务器上批量创建文件

    最近在EDAS产品上发现了一个有意思的功能,能够在Web界面上向多台服务批量下发命令执行,觉得这个功能能够极大的提升效率,因此想分享给其他小伙伴. 这里我以"通过Web界面在多台服务器上批量 ...

  2. mysql构建器 批量插入_mysqlbatch: mysql的批量执行工具,可以在多台mysql服务器上执行指定的SQL语句,支持sharding,比如在sharding之后的表上批量创建索引...

    MySQL Sharding 批量执行工具 主要功能 批量建库.批量建表.批量执行SQL脚本(创建索引.修改表结构).Sharding使用情况分析 使用方法 python ./mysqlbatch.p ...

  3. python怎么创建txt文件啊_python根据txt文本批量创建文件夹

    前言 前言:想写这个代码的原因是因为实习的时候需要根据表格名创建对应的文件夹,如果只是很少个数文件夹的话,ctrl+shift+n还可以接受吧,可是一次就要创建几百个文件夹,这就有点方方了.所以我写了 ...

  4. 用Shell脚本在推出的RAC节点上批量部署32个Oracle11gR2 RAC备份恢复案例场景的方法PART2...

    8.11 9d_当前控制文件损坏_只读user表空间完全恢复_用控制文件脚本_不需备份 在PXE推送端主机上运行: [root@server1 ~]# bcl --RACGRID11g13 9d 场景 ...

  5. 简单五步,实现物联网批量创建设备

    产品指某一类设备,创建完产品后,需要为具体设备创建身份.您可以创建单个设备,也可以批量创建设备.本文为您讲述如何批量创建设备. 操作步骤 1.登录物联网平台控制台. 2.在左侧导航栏,选择设备管理 & ...

  6. Windows高效办公之批量创建文件夹

    一.需求说明   有些时候因为工作需求,我们需要批量创建目录.比如SVN需要为每个员工创建个人工作周报目录:比如项目A完成了,新启动了项目B,项目B与项目A类似,公司模板化管理需要我们编制和保存同类的 ...

  7. exchange创建邮箱组_Exchange批量创建用户组及启用通讯组邮箱-阿里云开发者社区...

    Exchange批量创建用户组及启用通讯组邮箱 1. 批量创建AD中的用户组 用户组的创建可参考批量导入用户账号的方法,先创建一个CSV文件,然后通过命令导入AD中.命令格式 csvde –i –f ...

  8. Windows 批量创建用户

    目录 一.用户的删除和创建 二.批量创建用户 三.批量创建用户并将用户加入组中 一.用户的删除和创建 # 创建用户 net user username password /add# 创建空密码用户 n ...

  9. 如何用excel批量创建文件夹?

    如何用excel批量创建文件夹?前几日公司有个同事问我一个问题,他在一个excel表格中准备了200多个文件夹名称,现在需要通过这个excel批量创建文件夹并进行命名,有什么方法可以一次性实现?应该有 ...

最新文章

  1. Libevent实现TCP服务循环监听
  2. FC8下安装mplayer
  3. PIC模拟从入门到熟练系列之组会PPT20210906《Note of PIC》
  4. [原]ImportError: No module named thrift.Thrift问题解决
  5. SAP Commerce Extension的Web应用启动问题
  6. mysql 数据分析的步骤_数据分析8个主要步骤
  7. Windows server 2003 Cpu的-性能报警
  8. Dubbo(十一)dubbo的超时重试配置以及启动检查
  9. HDOJ2026 ( 首字母变大写 ) 【水题】
  10. 个性化你的IE,把你的名字刻在IE上!
  11. 阅读《http权威指南》
  12. Linux内核API手册——简略版
  13. 樱花树下的欢笑---2012春西安交大樱花节
  14. u盘插上电脑后计算机没没磁盘,U盘插上电脑没有显示“可移动磁盘”的解决
  15. 写一篇大数据背景下室内设计的论文
  16. 阿里云服务器是国内的还是国外的?
  17. autoJS pro-手机自动化脚本(douyin App模拟人工操作点赞、评论、收藏、转发)
  18. C语言输出格式工整的日历——2乘6样式(详见本文)
  19. OpenWRT使用SNMP监测网络状态
  20. oracle的dump头文件用ue显示,关于Oracle dmp文件导入随笔

热门文章

  1. 国网 内网U盘 服务未启动 驱动版本不符问题
  2. 怎么实现一个3d翻书效果
  3. aes256 java_用Java进行AES256
  4. C#医疗保险定点结算
  5. Filco win10 蓝牙问题
  6. PEG-PDPA-PAMA 聚乙二醇-甲基丙烯酸氨基乙酯-甲基丙烯酸二异丙基氨基乙酯
  7. 服务器ios文件夹是否存在,ios – 如何确定iCloud文件夹中是否存在文件?
  8. 华为畅享20 Pro樱雪晴空新色开售 华为畅享20 Pro怎么样
  9. 无法访问计算机 库未注册,64位操作系统下用Microsoft.Jet.OLEDB.4.0出现未注册错误...
  10. 这个PDF转PPT小妙招,PPT达人都知道!