当前位置:   article > 正文

py2neo+Neo4j初体验_py2neo沙箱

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
  • 1
  • 2

连接数据库,这里注意连接的信息要用到创建沙箱的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()#清空数据库
  • 1
  • 2
  • 3
  • 4
  • 5

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

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

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

关键代码为:

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)
  • 1
  • 2

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

问题记录

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/161136?site
推荐阅读
相关标签
  

闽ICP备14008679号