py2neo代码封装

from typing import Text, Dict
from py2neo import Node, Relationship, Graph, NodeMatcher, RelationshipMatcherclass Neo4jDB(object):def __init__(self,host: Text,port: int,username: Text,password: Text):self.ip = f"http://{host}/:{str(port)}"self.username = usernameself.password = passworddef get_client(self):graph = Graph(self.ip, username=self.username, password=self.password)return graphdef find_node_matcher(self,graph:Graph,label:Text,condition:Dict):return NodeMatcher(graph=graph).match(label).where(**condition)def find_node_one(self,graph:Graph,label: Text,condition: Dict):return self.find_node_matcher(graph=graph,label=label,condition=condition).first()def find_node_all(self,graph: Graph,label: Text,condition: Dict):return self.find_node_matcher(graph=graph,label=label,condition=condition).all()def find_relation_matcher(self,graph:Graph,node1:Node,node2:Node,r_type:Text,condition:Dict):return RelationshipMatcher(graph).match((node1, node2), r_type=r_type).where(**condition)def find_relation_one(self,graph: Graph,node1: Node,node2: Node,r_type: Text,condition: Dict):return self.find_relation_matcher(graph=graph,node1=node1,node2=node2,r_type=r_type,condition=condition).first()def find_relation_all(self,graph: Graph,node1: Node,node2: Node,r_type: Text,condition: Dict):return self.find_relation_matcher(graph=graph,node1=node1,node2=node2,r_type=r_type,condition=condition).all()def add_node(self,graph:Graph,label:Text,properties:Dict):if "name" not in properties:raise ValueErrorcondition = {"name": properties["name"]}if self.find_node_one(graph=graph, label=label, condition=condition):return Nonen = graph.create(Node(label, **properties))return ndef add_relation(self,graph:Graph,label1:Text,label2:Text,properties:Dict,r_type:Text,node1_condition:Dict,node2_condition:Dict):node1 = self.find_node_one(graph=graph, label=label1, condition=node1_condition)node2 = self.find_node_one(graph=graph, label=label2, condition=node2_condition)if node1 is None or node2 is None:return None## 判断是否存在关系if self.find_relation_one(graph=graph, node1=node1, node2=node2, r_type=r_type, condition={}):return Nonen = graph.create(Relationship(node1, r_type, node2, **properties))return ndef update_properties(self,graph:Graph,label:Text,properties:Dict,condition:Dict):nodes = self.find_node_all(graph=graph, label=label, condition=condition)for n in nodes:n.update(**properties)graph.push(n)def delete_all(self, graph:Graph):graph.delete_all()def delete_node(self, node:Node):graph.delete(node)def delete_relation(self, rel:Relationship):graph.delete(rel)def find_by_id(self, graph:Graph, id:int):return NodeMatcher(graph)[id]

py2neo代码封装相关推荐

  1. python学习——把计算GC含量的代码封装成函数

    把代码封装成函数的好处是可以重复使用该段代码,并且会使代码结构清晰 例如要计算chr1以及chr2染色体的GC含量,代码如下: 1 # 将代码封装为函数并重复使用,例如计算染色体的GC含量 2 chr ...

  2. HttpRequest Java原生代码封装

    HttpRequest Java原生代码封装  get提交 post提交 name1=value1&name2=value2 的形式  json形式两种形式 package com.beisu ...

  3. 简化业务代码开发:看Lambda表达式如何将代码封装为数据

    摘要:在云服务业务开发中,善于使用代码新特性,往往能让开发效率大大提升,这里简单介绍下lambad表达式及函数式接口特性. 1.Lambda 表达式 Lambda表达式也被称为箭头函数.匿名函数.闭包 ...

  4. ajax代码原理,关于Ajax的原理以及代码封装详解

    前言 其实AJAX内部实现并不麻烦,主要通过一个叫XMLHttpRequest的对象,而这个对象在现有的浏览器均被支持. 可以说,它是整个AJAX实现的基础,是浏览器用于后台与服务器交换数据的对象,有 ...

  5. 命名空间:不只是代码封装

    命名空间 命名空间并不是新事物,在很多面向对象的编程语言中,都得到了很好的支持,它有效的解决了同一个脚本中的成员命名冲突问题.所以说,命名空间是一种代码封装技术,代码中的每个成员,都是自己的活动空间, ...

  6. java编写一个类book代表教材_java 请通过代码封装,实现如下需求: 编写一个类Book,代表教材:...

    java 请通过代码封装,实现如下需求: 编写一个类Book,代表教材: 关注:191  答案:2  mip版 解决时间 2021-02-01 17:18 提问者万丈深渊 2021-02-01 10: ...

  7. C++代码封装成dll供C#中调用、调用dll无可用源

    C#工程不可以直接调用C++的头文件和Lib库等 所以在程序中C#需要调用的现象,先将C++的东西封装成动态链接库,再调用 若调用dll时显示:无可用源调用,说明导入的DLL路径不对. 静态库和动态库 ...

  8. 他山之石——VBA代码封装

    继续学习VBA! 话说CSDN又改版了啊,这世界天天在变化啊! '1 什么是DLL文件'DLL是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的 ...

  9. 京东jd商品详情API接口(item_get-根据ID取商品详情)代码封装

    item_get-根据ID取商品详情接口 通过代码封装该接口可以拿到商品标题,商品价格,商品促销信息,商品优惠价,商品库存,sku属性,商品图片,desc图片,desc描述,sku图片,sku描述,商 ...

最新文章

  1. LIVE555简介及在Windows上通过VS2013编译操作步骤
  2. RPM安装命令总结--转载
  3. 一秒创建高级查询服务
  4. unity, 同步物体坐标一定要在LateUpdate中进行
  5. PWN-COMPETITION-HGAME2022-Week4
  6. java csv 追加_如何在Java中添加一个包含CSV数据的列
  7. Magento布局layout.xml文件详解
  8. 查看类的实现类mac_自定义类加载器实现热加载
  9. 2020推荐系统算法一览、实践
  10. python如何运行一个python程序_python如何运行?第一个python小程序示范
  11. DynamicResource与StaticResource的区别
  12. Slate轨道工具使用(一)—Track,Clip
  13. 判断是否为IE浏览器
  14. 吹爆这个最近在用的 IDEA 神器
  15. C#输出字符串组合排列
  16. 《程序设计基础》 第十章 函数与程序结构 6-5 递归求简单交错幂级数的部分和 (15 分)
  17. STM32学习笔记(五 定时器及应用 1 定时器基本原理 )
  18. centos系统清理挖矿病毒kthreaddk
  19. JavaScript 经典代码大全
  20. HYNB Contest 7:2017 Asia HCMC Vietnam National Programming Contest

热门文章

  1. android 触摸屏进程,Android 触摸屏TP
  2. Math之ARIMA:基于statsmodels库利用ARIMA算法对太阳黑子年数据(来自美国国家海洋和大气管理局)实现回归预测(ADF检验+LB检验+DW检验+ACF/PACF图)案例
  3. 5G智能水表产业生态大会召开,中国电信5G赋能智慧水务新未来
  4. 微信用户绑定java实例_OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)...
  5. 典型DC24V接口防护电路分析
  6. 名编辑电子杂志大师教程 | 名编辑电子杂志输出PDF文件
  7. 求车载rkpx3刷机包!!!和语音助手app!或者怎么重新设置UI
  8. 2018第九届环中国国际公路自行车赛落下帷幕
  9. [git]smartgit 取消非商业版本(non-commercial)选项后怎么继续免费使用
  10. 资深HR来告诉大家制作个人简历的时候内容要怎么写?