py2neo+Neo4j初体验

简介

图数据库是做知识图谱的好东东。当然,还可以做很多东西:
数据可视化、复杂网络不社会网络分析等
目前市面上有很多种,排名可以参考这里
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秒一条,解决方法应该是批量插入,但是没有找到具体解决的代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值