连接到neo4j

from py2neo import  Graph
graph = Graph("http://localhost:7474", username="neo4j", password="123456")
#localhost可为启动了neo4j服务的服务器地址

建立节点

from py2neo import Node
skill = 'skill'
name = '如来神掌'
attack = '100000'
power = 1000
lossmg = 15
name_node = Node(skill,name=name,attack=attack,power=power,lossmg=lossmg)
graph.create(name_node)

一个节点的数据形式是 {id:label {attri1:1,attri2:2}}这样的;其中label可以理解为sql类的数据库中的表名,id是这个节点的id,后面的字典就是这个节点的属性。
Node中第一个skill为label,一个后面的name等是属性的赋值操作;create将该节点在graph中创建,这样它才是一个有灵魂的节点。
注意 属性名称里最好不要包含名为attri的属性,会报一个错误,似乎是和内部的一个参数名同名了。

将excel中的数据导入neo4j中,每一行数据作为一个节点:

from py2neo import Node
import tqdm
import pandas as pdclass ExcelToNeo4j(object):"""将excel中数据存入neo4j"""def __init__(self, delete=True):"""建立连接,高清有码"""self.graph = Graph("http://111.229.***.138:7474", username="neo4j", password="****")if delete:self.graph.delete_all()def NodeType(self, lable_name, attri):"""拼接Node执行字符串"""node = "name_node = Node(" + lable_name + ","for at in attri:node += at + "=" + at + ","node = node[:-1]+")"return nodedef create_node(self, lable_name, node_list_key, attri):"""建立节点node_list_key: [[attri1,attri2,...],[]]attri: 属性名称list"""# print('attri:',attri) #属性值里面的key名称不要出现attri,会和原始参数冲突locals()[lable_name] = lable_namewith tqdm(total=len(node_list_key)) as pbar:for attri_list in node_list_key:#name_node = Node(lable_name, name=name)for key,value in list(zip(attri,attri_list)):locals()[key] = value  loc = locals()print(self.NodeType(lable_name, attri))exec(self.NodeType(lable_name, attri))name_node = loc['name_node']self.graph.create(name_node)pbar.update(1)pbar.close()print("create node end")def data_extraction(data):"""节点数据抽取"""# 取出code到listnode_list_key = []for i in range(0, len(data)):node_list_key.append(data[data.columns[0]][i])# value抽出作属性node_list_value = []for i in range(0, len(data)):node_list_value.append([])for n in range(0, len(data.columns)):# 取出表头名称data.columns[i]node_list_value[i].append(data[data.columns[n]][i])# 将list中浮点及整数类型全部转成string类型node_list_value = [[str(i) for i in item] for item in node_list_value]return node_list_key, node_list_valuedata_player = pd.read_excel('./player.xlsx', header=0, encoding='utf8')
node_list_key, node_list_value = data_extraction(data_player)
create_data = DataToNeo4j()
create_data.create_node('player', node_list_value,data_player.columns)

attri_value:[[value11,value12,…],[value21,value22,…]]这样一个列表,元素代表一行数据对应的属性值。
attri:[attri1,attri2,…],包括各个属性的名称,pandas的DataFrame直接取columns就行。
NodeType用来拼接出
“name_node = Node(skill,name=name,attack=attack,power=power,lossmg=lossmg)”这样一串字符串,用locals()创建了与字符串同样的变量名并且赋值,注意loc = locals()和name_node = loc[‘name_node’]是必要的,不然name_node这个变量不会被下面的语句识别。
这样就可以适应各种属性名称,不用手动打上去了~不知道有没有其他官方一点的做法,求教了!

建立关系

from py2neo import Node, Graph, Relationship
graph = Graph("http://localhost:7474", username="neo4j", password="123456")
node1 = Node('skill',name='如来神掌',attack=100000,power=100,lossmg=15)
node2 = Node('people',name='阿星',hp=100000,mg=100)
graph.create(node1)
graph.create(node2)
properties = {'国籍':'中国','属性':'佛性'}
rel = Relationship(node1,'归属', node2,**properties)
graph.create(rel)

这样就建立了技能表’skill’里的’如来神掌’节点归属到人物表’people’里的阿星的关系了;这里面有个参数properties是表示这个关系的属性,要写成字典的形式,和节点的属性差不多意思。

有合就有离,怎么把如来神掌抢到自己的节点上

graph.separate(rel)

这样一下,它们就分开,在一起总比分开难~

py4neo V4基操相关推荐

  1. ThinkPHP6项目基操(15.实战部分 阿里云短信redis)

    阿里云短信redis 一.安装阿里云短信SDK 二.封装到项目lib中 三.radis记录验证码 1. 安装redis服务 2. 可视化redis管理软件 3. PHP安装redis扩展 4. 配置缓 ...

  2. 面试基操:MQ怎么保障消息可靠性?

    面试官:在MQ的整个消息生产消费过程中,如何保障消息100%被消费? 候选人:MQ有个ACK机制,确保消息100%被消费. 面试官:好吧,可以回去等通知了-- 这道面试题在考察MQ组件时算是老生常谈了 ...

  3. itextpdf添加表格元素_基操勿6第四期:PPT表格美化

    大家好,这里是"基操勿6"的第四期内容,我是阿远. 原本按我的计划是要先把PPT里面一些大家可能不太清楚,但是却很好用的操作先给大家做一遍分享.希望大家用到的时候,可以在同事震惊的 ...

  4. ThinkPHP6项目基操目录

    前言 ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的.ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色 ...

  5. Linux基操 笔记

    Linux基操 常用命令 vim命令 进入目录 查看目录文件 查找文件 移动文件 复制文件 删除文件 解压文件到指定目录 压缩文件 linux安装jdk1.8 1.官网下载 2.root用户下 3.配 ...

  6. 2021-09-03 Elasticsearch基操

    Elasticsearch 基操 一.Elasticsearch介绍 二.curl 基本操作 三.es 可视化工具 一.Elasticsearch介绍 二.curl 基本操作 参考:使用curl操作 ...

  7. 【数据结构】线性表之单向链表的八大基操

    线性表可以采用顺序存储结构(依赖于数组)和链式存储结构(依赖于指针) 下面是单向链表有着八大基本操作(简称八大基操) SLinkNode.cpp: #include <stdlib.h> ...

  8. C++ 对文件的最常用基操之对 ASCII 文件(文本文件、字符文件)的操作

    C++ 对文件的最常用操作 ☆ 基本概念 根据文件中数据的组织方式,可以将文件分为 ASCII 文件 和 二进制文件. 前者又称为文本文件或字符文件,后者又称为内部格式文件或字节文件. 本文讲解针对 ...

  9. elasticdump工具安装及基操

    elasticdump工具安装及基操 1.下载nodeJs 下载该插件需要有 nodejs 的 npm 没有请先下载nodejs 网址:https://nodejs.org/en/download/ ...

最新文章

  1. Linux中的进程之初步了解
  2. MySQL 故障集锦
  3. Jmeter之Bean shell使用(一)
  4. iOS之Block总结以及内存管理
  5. 使用 Spring Boot 快速构建 Spring 框架应用--转
  6. SpringBoot+Vue+Itext实现前端请求文件流的方式导出PDF时在指定位置添加照片
  7. 2018年4月1日 蓝桥杯 C/C++B组答案 乘积尾零
  8. Ti的DM368系列芯片的所有PDF资料汇总
  9. Linux 磁盘管理--RAID1创建
  10. 一次百万长连接压测 Nginx OOM 的问题排查分析
  11. linux awk拼接字符串,shell awk命令字符串拼接
  12. spark 部署方式
  13. 游戏动画中欧拉角与万向锁的理解
  14. 电脑连接ios开发配置
  15. 画出清明上河图的代码_制作阴影立体动态图文图的代码【清明上河图】
  16. CSS - 选择器优先级介绍
  17. stm32制作CAN适配器2--兼容使用周立功上位机
  18. tr命令解析_学习笔记
  19. DGZX1564 - 水塔水位
  20. Android 一个简单手机响铃功能实现

热门文章

  1. 华为WATCH 3和GT3运动手表该如何选?哪个更适合自己
  2. 我的世界服务器指定等级指令,[教程]我的世界服务器指令大全介绍
  3. html ios风格日历,仿IOS移动端日历
  4. 利用Javascript制作网页特效(图像特效)
  5. 生如蝼蚁,当有鸿鹄之志
  6. Xilinx ZYNQ 7000 HDMI
  7. minigui 3.2.0:对mgncs剪裁遇到的问题error: The pkg-config script could not be found or is too old.
  8. 申请大学用的是IB预估分?
  9. web开发技术培训学校,CSS标准文档流与脱离文档流
  10. C#处理Word文档