首页 > 数据库 >Python操作Neo4j数据库使用案例

Python操作Neo4j数据库使用案例

时间:2023-04-20 17:41:38浏览次数:45  
标签:node name Python graph 数据库 实体 Neo4j



Python操作Neo4j数据库使用案例

  • 一、数据结构
  • 二、上传数据
  • 三、清空数据库
  • 项目数据和代码


  Neo4j是一个世界领先的开源的基于图的数据库。其语言操作简单直观,本文假设你已经安装好Neo4j数据库,并对知识图谱有一定的了解。Neo4j数据库的查询语言为CQL,其代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。

  本文将使用Python结合Cypher语言对Neo4j数据库进行操作,在上一篇文章中:基于Brat标注数据集的python包network网络构建和搜索,我们使用network进行替代处理,在学习本文后,可以直接使用快捷方便的Neo4j数据库。

一、数据结构

  首先将数据放在表格中,每一行数据为“头实体”、“头实体类别”、“头尾实体关系”、“尾实体类别”、“尾实体”,如图:

Python操作Neo4j数据库使用案例_查询语言


  你可以将数据构造成这样的结构,我们为你提供了一项非常便捷的工具:“实体关系标注软件” (或者访问博客主页查找),该软件可以快速的帮助你将文本构造成5元组形式,以及字符标签一对一的形式,并提供了许多便捷之处。

二、上传数据

1、连接数据库

#----打开数据库-----
from py2neo import Node, Relationship, Graph, NodeMatcher, RelationshipMatcher,Subgraph
graph = Graph("http://localhost:7474/", auth=("neo4j", "替换为你的密码"))

2、读取数据

path = r"C:\Users\DELL\data\5501-6000_input_pre_5元组.csv"

file = open(path,'r',encoding = 'utf-8').readlines()


con = list()
zh = ['病名','病症','其它','药名','诊断方案','治疗方案','包含','治疗','危险因素','辅助诊断','特征','并发','别名','作用','条件','诊断']

3、上传数据

for j in file:
    try:
        a = j.replace("\t","").strip('\n').split(",")
        # a = [eval(i) for i in a] #引号里面有引号-两对引号
        a = [i for i in a] #只有一对引号
        
        if (a[1] not in zh) or (a[2] not in zh) or (a[3] not in zh):
            continue
        #['甲状腺功能亢', '病名', '治疗', '其它', 'HCV感染患者']
        con.append(a)
    except:
        continue
    # print(a)


for j in con:
    
    try:
        selector = NodeMatcher(graph) #创建图,实质上为句柄
        # ---创建头实体节点---
        entity1 = selector.match(j[1], name = j[0]) #检索是否存在头实体节点
        if len(list(entity1)) == 0: #不存在头实体节点,则创建头实体
            entity1_node = Node(j[1], name = j[0])
            graph.create(entity1_node) #创建头实体
        else: #存在头实体节点,跳过
            pass

        # ---创建尾实体节点---
        entity3 = selector.match(j[3], name = j[4])
        if len(list(entity3)) == 0: #不存在尾实体节点,则创建
            entity3_node = Node(j[3], name = j[4])
            graph.create(entity3_node)
        
        
        else: #存在节点,跳过
            pass

        #将两虚点建立关系
        e1_node = graph.nodes.match(j[1], name = j[0]).first()
        e2_node = graph.nodes.match(j[3], name = j[4]).first()
        e12 = Relationship(e1_node, j[2], e2_node)
        graph.create(e12)
    except:
        continue

print("ok1")

4、查看结果。打开neo4j端口,可以看到下图结果:

Python操作Neo4j数据库使用案例_neo4j_02


Python操作Neo4j数据库使用案例_知识图谱_03

三、清空数据库

  Neo4j是非结构化的数据库,不同于结构化的数据库有分区分表的思想。Neo4j数据库是将所有的数据,不论这些数据是否来自于哪里,及时它们毫无相关,都放在同一个库中。

  倘若需要清空该库,可以使用:

#----打开数据库-----
from py2neo import Node, Relationship, Graph, NodeMatcher, RelationshipMatcher,Subgraph
graph = Graph("http://localhost:7474/", auth=("neo4j", "替换为你的密码"))


#----删除所有内容-----
graph.delete_all()

标签:node,name,Python,graph,数据库,实体,Neo4j
From: https://blog.51cto.com/guog/6210011

相关文章

  • python-ldap模块
    文章目录模块作用模块安装代码示例参考文档模块作用python操作ldap的库,可以对ldap的数据进行增删改查,官方文档地址:https://www.python-ldap.org/en/latest/index.html模块安装pipinstallpython-ldap代码示例不断完善中……#!/usr/bin/envpython#-*-coding:utf-8-*-#......
  • DB2数据库安装
    DB2V10.5版本下载链接:https://pan.baidu.com/s/1OD08ozJN0melZAEIu-OD_w?pwd=g9qw提取码:g9qw《《《此版本仅用自学使用非商业版本出现问题本人不负责!!!》》》一、db2prereqcheck预检查首先进入到压缩包所在的目录,执行tar命令对.tar.gz压缩文件进行解压#解压到当前目录tar......
  • Python中保存字典类型数据到文件
    三种方法:1、在Python中使用pickle模块的dump函数将字典保存到文件中importpicklemy_dict={'Apple':4,'Banana':2,'Orange':6,'Grapes':11}#保存文件withopen("myDictionary.pkl","wb")astf:pickle.dump(my_dict,tf......
  • python的flask写后台API
    @app.route("/",methods=["GET"])defindex():return"indexpage" @app.route("/hello")defhello():return"hello"@app.route("/hey/<username>/")defhey_yingong(username):return......
  • 24道Python面试练习题
    1.简述函数式编程答:在函数式编程中,函数是基本单位,变量只是一个名称,而不是一个存储单元。除了匿名函数外,Python还使用fliter(),map(),reduce(),apply()函数来支持函数式编程。2.什么是匿名函数,匿名函数有什么局限性答:匿名函数,也就是lambda函数,通常用在函数体比较简单的函数上。......
  • day 03 3.1 Python重要数据类型
    重要数据类型5.1、列表5.1.1、列表声明在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。列表就是这样的一个数据结构。列表会将所有元素都放在一对中括号[]里面,相邻元素之间用逗号,分隔,如下所示:[element1,element2,element3,...,elementn......
  • day 01 1.1 Python基础之编程语言介绍
    Python基础之编程语言介绍1.1、什么是编程语言编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样)。就像我们中国人之间沟通需要汉语,英国人沟通需要英语一样,人与计算机之间进行沟通需要一门语言作为介质,即编程语言。编程语言......
  • day 01 1.2 Python基础之Python语言介绍
    Python语言介绍2.1、了解Python语言Python是1989年荷兰人GuidovanRossum(简称Guido)在圣诞节期间为了打发时间,发明的一门面向对象的解释性编程语言。Python来自Guido所挚爱的电视剧MontyPython'sFlyingCircus。Guido对于Python的设计理念就是一门介于shell和C......
  • LeetCode Top100: 买卖股票的最佳时机 (python)
    LeetCodeTop100: 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这......
  • Python基础语法
    Python标识符在Python中,标识符由字母、数字、下划线组成。标识符要求如下:可以包括英文,数字以及下划线;不能以数字开头;区分大小写;以单下划线开头(eg:_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用fromxxximport*而导入;以双下划线开头的(eg:__foo)......