20200708 - 初步使用

2024-06-15 16:58
文章标签 使用 初步 20200708

本文主要是介绍20200708 - 初步使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2020/07/08 -

引言

本篇文章我来简单介绍一下怎么利用python来使用这个neo4j,不涉及具体原理,本次只是描述具体的使用过程;从这个过程中再分支出具体的使用过程。
本次我测试的数据是两个,一个是DNS数据,文本内容是host,dns,还没有涉及请求的是什么,因为我想不通这个关系是什么;另外一个数据是网站请求数据,这个数据就稍微多了几列,但核心就是host和网站的内容。那么从这两个数据中,我就是把这个访问的关系给绘制出来,具体挖掘什么信息,比如什么社群发现,我是暂时想不出来这层语义是什么。


本文主要阐述了使用CSV格式的数据,数据中只有两个节点的信息(可以多种,代码自行调整),然后绘制他们的关系。代码运行没问题,但也产生了一些问题,目前待解决:
1)如何添加属性等信息
2)如何批量节点信息
3)我这里是采用去重的方式来实现了插入,但是正确的姿势应该是什么呢?


搭建数据库

这里使用docker的方式进行搭建,一开始选了最新版,在修改密码的界面一直卡着,通过开发者工具的形式,我就发现了原因是他某个请求发完了127.0.0.1,感觉是个bug。所以最后选择了neo4j:3.4。启动命令:

docker run -it -p 7474:7474 -p 7687:7687 neo4j:3.4

其中7474是web的接口,同时看到后面的python的调用方式,估计他是使用httpapi来通信的把。

python库

python库使用的是py2neo,正常安装就好了

全部代码

#! /bin/python2
#coding:utf-8
#Author:VChao
#2020/07/08from py2neo import Graph, Node, Relationship
#连接数据库
graph = Graph("http://10.245.142.250:7474",username = "neo4j", password = "wangchao")
#删除所有数据
graph.delete_all()
#读取数据
with open("src_dst_ip.csv","r") as f:data = f.readlines()data = map(lambda x: x.strip(), data)
##这里插入数据的方式是先去重,然后对每个IP都建立一个节点,并将这个节点都存入列表中
##读取原始数据的关系,每次都获取出来关系信息,按照ip从前面创建的节点中来加入关系
##因为创建关系的时候,需要利用Node对象作为点
src_ip_list = list(set(map(lambda x: x.strip().split(",")[0], data)))
dst_ip_list = list(set(map(lambda x: x.strip().split(",")[1], data)))
relation_list = list()
src_node_list = []
dst_node_list = []for one in src_ip_list:src_node_list.append(Node("host", name = one))
for one in dst_ip_list:dst_node_list.append(Node("dns_server",name = one))
for one in data:src_ip, dst_ip = one.split(",")src_node = src_node_list[src_ip_list.index(src_ip)]dst_node = dst_node_list[dst_ip_list.index(dst_ip)]r = Relationship(src_node, "query", dst_node)#在数据库创建这个东西,注意看这里是两个节点和一个关系一起创建的s = src_node | dst_node | rgraph.create(s)

代码分析

  1. 创建节点Node
    Node("host", name = one),这个代码中,第一个参数是Label的信息,第二个是name。相当于create (host|one),这样的语句。虽然两个节点对象都是这种创建方式,但是插入的两种类型,只有一个默认按照name来显示节点,不过可以在界面选择不显示的点,设置让他显示这个名字。不过我暂时还没找到其他的一些关于这个节点属性的插入方式,这个后面解决一下。

  2. 创建关系
    没什么多说的,Relationship(src_node, "realation label", dst_node)。最后的graph.create(s)节点有点意思,这个意思是批量创建吗?还是说必须是这种存在关系的三个变量。而且这里有一个问题我还是没注意到的,就是实际上某个节点可能已经创建好了,这种情况是怎么处理的,可能要看这个API来解决了。

  3. 节点的重复性
    一开始的时候,我对他这个节点的属性和其他的东西理解的不清楚,以为这些都是唯一的,但是测试过程中发现如果我执行两次同样的插入命令,结果会出现两个节点;这两个节点信息都是一样的, 只有id不一样,可以从界面上看到这个信息。所以,这才产生了前面先去重然后将这个列表存起来的方式。不知道是不是还有别的方式。

这篇关于20200708 - 初步使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064043

相关文章

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图