py2neo+Neo4j初体验

news/2024/6/1 22:52:27 标签: 知识图谱, 图数据库

这里写目录标题

  • 简介
  • 安装与沙箱使用
  • py2neo
  • 问题记录

简介

图数据库是做知识图谱的好东东。当然,还可以做很多东西:
数据可视化、复杂网络不社会网络分析等
目前市面上有很多种,排名可以参考这里。
Neo4j作为图数据库中的头牌,当然有其独到之处,
Desktop相当于管理数据库的客户端可以不用装,因为有web管理界面
还有一个auraDB好像是云上的数据库,一般也用不上
这里简单记录第一次使用Neo4j的一些注意事项

安装与沙箱使用

Windows下安装很简单,下载下来的是一个压缩包:
在这里插入图片描述
这里选择当然是免费的社区版
解压缩后用cmd窗口到bin目录下面,运行neo4j.bat
在这里插入图片描述按提示加start 参数或者把这个装成服务来启动,这里有前提,需要有java的JDK,我机器上木有,没往下折腾。
因为官网提供了Neo4j Sandbox
这个是可以直接云上创建可以用来直接做实验的环境,重要的是:
它支持远程连接!
它支持远程连接!
它支持远程连接!
如果是自己做实验,登录创建一个空白沙箱

在这里插入图片描述

当然,官网还提供了丰富的例子。
在这里插入图片描述
可以看到Neo4j有两个大方向:开发与数据挖掘

注意:
创建的沙箱有时间限制:三天,可以延长到十天(只能延长一次),对于做一些小实验来说已经够用了。
点击Connection details可以看到
在这里插入图片描述
因为会销毁,这里就不打码了,几个重要的信息:
用户名和密码
还有就是Bolt URL

点击open按钮后就可以在图形界面管理数据库
在这里插入图片描述

py2neo

py2neo现在的版本是v4,网上很多教程都是老版本的,没法用。。。

先导入库,没装就pip装下:

from py2neo import Node ,Graph,Relationship
import pandas as pd

连接数据库,这里注意连接的信息要用到创建沙箱的Connection details

g=Graph("bolt://3.239.106.31:7687", auth=("neo4j", "user-categories-mineral"))#这里用的官方的sandbox
#注意,老版的用户名密码写法有问题:
#g = Graph('http://localhost:7474/',username='neo4j',password='123456')

g.delete_all()#清空数据库

读取节点数据然后创建英雄节点:

hero_data=pd.read_csv('./data/王者荣耀hero.csv',header=0,encoding='gbk')#这里注意数据文件的路径

print(len(hero_data))#68个数据
#这里不知道为什么要运行很久,估计是远程数据库的原因
for i in range(0,len(hero_data)):
    temp=Node('hero',name=str(hero_data['name'][i]),
           skill_passive=str(hero_data['skill_passive'][i]),
           skill_1=str(hero_data['skill_1'][i]),
           skill_1_cooling=str(hero_data['skill_1_cooling'][i]),
           skill_1_cost=str(hero_data['skill_1_cost'][i]),
           skill_2=str(hero_data['skill_2'][i]),
           skill_2_cost=str(hero_data['skill_2_cost'][i]),
           skill_2_cooling=str(hero_data['skill_2_cooling'][i]),
           R=str(hero_data['R'][i]),R_cooling=str(hero_data['R_cooling'][i]),
           R_cost=str(hero_data['R_cost'][i]),tag=str(hero_data['tag'][i]),
           HP=str(hero_data['HP'][i]),MP=str(hero_data['MP'][i]),
           HP_recover=str(hero_data['HP_recover'][i]),
           MP_recover=str(hero_data['MP_recover'][i]),
           attack=str(hero_data['attack'][i]),
           defense=str(hero_data['defense'][i]),
           magic_defense=str(hero_data['magic_defense'][i]),
           speed=str(hero_data['speed'][i]),
           attack_range=str(hero_data['attack_range'][i]))
    g.create(temp)

后面创建物品节点的代码就不贴了,主要是创建关系。
关系有三种:
武器与英雄关系
武器与武器关系
英雄与武器关系

关键代码为:

rel = Relationship(g.nodes.match('hero',name= data['name'][m]).first(), data['guanxi'][m], g.nodes.match('hero',name=data['name2'][m]).first())
g.create(rel)

这里的data是从excel中读取的,大概是这样:
在这里插入图片描述

问题记录

这里的关系非常多,三种关系将近2000条记录
上面也提到,估计是远程数据库的关系,一条条的create非常慢,将近0.5秒一条,解决方法应该是批量插入,但是没有找到具体解决的代码。


http://www.niftyadmin.cn/n/494183.html

相关文章

虚拟环境XP不能访问Linux 相关服务问题总结

好久没有玩Linux了,怕把相关的命令都忘记了,于是决定重新把Linux里的相关服务重新再搭建一次,以前都是玩Redhat 9.0,~哈哈有点落午了,这次用到了Redhat 5.0企业版,关于搭建服务的方法网上一搜一大把,但很少有人把搭建服务中遇到的问题拿出来共享哈,而这次我就把我在搭建服务过程…

小菜鸟学习三层

【三层的学习给我能带来什么?】 当我学习三层之前,眼中的三层是前端界面是一层,然后里面的逻辑结构是一层,然后后面访问数据是一层,和原先自己做的机房对比,不再是敲vb时用到什么功能,敲什么功能…

Linux下使用源码编译安装软件

在Linux下安装软件,可分为三种方式:使用制作好的rpm包安装、使用yum源进行安装、编译源代码的方式安装软件包。使用编译源代码的方式安装软件包步骤: 【1】.执行"./configure" 其作用就是编译源代码生成makefile.in即makefile文件…

oracle数据字典-权限-角色-参数

2019独角兽企业重金招聘Python工程师标准>>> 每个数据库都提供了各自的数据字典的方案,虽然形式不同,但是目的和作用是一样的,比如在mysql里数据字典是在information_schema 里表现的,sqlserver则是在sys这个系统schem…

DALFactory出现未能加载文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件”的解决方案 .

【出现的原因】 由于UI层的配置文件调用D层的dll文件,从而实现配置的功能的实现,所以造成这个问题出现的原因,无外乎下面这几个方面: 1:DLL文件名与加载时的DLL文件名不一致。 2:.DLL文件根本不存在&#…

剪映初体验

文章目录前言PPT字幕动画进度条手机版前言 最近因为需要录制一段讲解视频,刚开始的思路是用录屏软件,开PPT讲,然后用内录搞定,但是想加字幕,搜自动字幕搜来搜去,找到了剪映。开始的时候是打算用剪映来剪辑…

yii2 依赖注入探索

为什么80%的码农都做不了架构师?>>> 当从容器中get一个类的实例时,容器Container需要解决的一个问题是依赖。 比如从容器中获取类A的实例,假如说类A依赖于类B,那么容器需要先获得B的实例,再实例化A。更多的…

时间都去哪了

时间管理你真的思考过吗,你真的去实践了吗,现在的你有没有属于自己的一套时间管理的方法,这都是我们需要思考的问题...