neo4j 登录认证_neo4j
neo4j图形数据库
一、下载
二、安装
1.需要配置java环境
2.配置neo4j系统变量 NEO4J_HOME -> C:\neo4j\neo4j-community-3.5.12
3.配置neo4j环境变量 Path中添加%NEO4J_HOME%\bin
4.验证是否安装成功
C:\Users\daiszhan>neo4j.bat console2019-11-07 03:08:25.943+0000 INFO ======== Neo4j 3.5.12 ========
2019-11-07 03:08:25.991+0000INFO Starting...2019-11-07 03:08:30.949+0000 INFO Bolt enabled on 127.0.0.1:7687.2019-11-07 03:08:33.013+0000INFO Started.2019-11-07 03:08:34.157+0000 INFO Remote interface available at http://localhost:7474/
5.通过访问http://localhost:7474 默认跳转到 http://localhost:7474/browser
默认用户名和密码为:neo4j,需要改自己的密码eagleeye
6.注册neo4j服务 C:\Users\daiszhan>neo4j install-service
三、开启服务
1.开启neo4j服务 C:\Users\daiszhan>neo4j start
2.关闭neo4j服务 C:\Users\daiszhan>neo4j stop
3.重启neo4j服务 C:\Users\daiszhan>neo4j restart
5.查看neo4j状态 C:\Users\daiszhan>neo4j status
四、安装python包
pip install py2neo
五、使用py2neo
1.添加节点
from py2neo importNode, Relationship, Graph, NodeMatcher, RelationshipMatcher## 新建图形
graph = Graph('http://localhost:7474', username='neo4j', password='eagleeye')## 新建节点
a = Node('label', name='a', id='0001', age=65, location='dalian') #第一个参数是类别,第二个参数是名字,可以有很多个参数名字
b = Node('label', name = 'b')
## 给节点添加/修改属性
a['age'] = 20## 绘制节点
graph.create(a)
graph.create(b)## 新建关系
r1 = Relationship(a, 'to', b, protocol = 'tcp') #a是开始节点,b是终止起点,to是二者关系类型,protocol是其他属性,可以有很多个其他属性
graph.create(r1)
## 给关系添加修改属性
r1['state'] = 'up'
## 输出节点, 关系
print(a)
(a:label {name='a',id='0001',age=65,lacation='dalian'})
print(r1)
(a)-[:to {protocol:"tcp"}]->(b)
## 对属性进行批量更新
data={age:21,location:'shanghai'}
a.update(data)
2.对节点的操作
## 新建图形
graph = Graph('http://localhost:7474', username='neo4j', password='eagleeye')## 新建节点
a = Node('label', name='a', id='0001', age=65, location='dalian')#返回节点的ID的哈希值
hash(a)#返回节点属性,没有就返回None
a[age]#设定节点属性值
a['type'] = 'ccc'
#删除节点属性,没有会报KeyError
del a['location']#返回节点属性的数量
len(a)#返回节点所有属性
dict(a)#返回一个生成器且只包含一个节点
walk(a)#返回节点的标签的集合
labels()#判断是否有这个标签
a.has_label(location)#给节点添加标签
a.add_label(test)#删除节点标签
a.remove_label(test)#清除所有标签
a.clear_labels()#添加多个标签
a.update_labels([test,test1])
3.对连接的操作
r1 = Relationship(a, 'to', b, protocol = 'tcp') #a是开始节点,b是终止起点,to是二者关系类型,protocol是其他属性,可以有很多个其他属性
graph.create(r1)#返回关系的hash值
hash(r1)#返回关系的属性值
r1['state']#设定关系的属性值
r1['state']='up'
#删除关系的属性值
del r1['state']#返回关系的属性值数目
len(r1)#以字典形式返回关系的所有属性
dict(r1)#返回一个生成器包含起始节点,关系,终止节点
walk(r1)#返回关系类型
r1.type()
4.子图
from py2neo importNode, Relationship
a= Node('Person', name='Alice')
b= Node('Person', name='Bob')
r= Relationship(a, 'KNOWS', b)
s= a | b |rprint(s)>>> ({(alice:Person {name:"Alice"}), (bob:Person {name:"Bob"})}, {(alice)-[:KNOWS]->(bob)})#获取所有的节点
s.nodes()#获取所有的关系
s.relationships()#取交集
s1=a|b|r
s2=a|bprint(s1&s2)>>> ({(alice:Person {name:"Alice"}), (bob:Person {name:"Bob"})}, {})print(s.keys())>>> frozenset({'name'})print(s.labels())>>> frozenset({'Person'})print(s.nodes())>>>frozenset({(alice:Person {name:"Alice"}), (bob:Person >>> >>> >>> {name:"Bob"})})print(s.relationships())>>> frozenset({(alice)-[:KNOWS]->(bob)})print(s.types())>>> frozenset({'KNOWS'})print(order(s))>>> 2
print(size(s))>>> 1
#子图拥有的属性
subgraph | other |… 子图的并
subgraph& other &… 子图的交
subgraph- other -… 子图的差
subgraph^ other ^… 子图对称差
subgraph.keys() 返回子图节点和关系所有属性的集合
subgraph.labels() 返回节点label的集合
subgraph.nodes() 返回所有节点的集合
subgraph.relationships() 返回所有关系的集合
subgraph.types() 返回所有关系的type的集合
order(subgraph) 返回子图节点的数目
size(subgraph) 返回子图关系的数目
5.遍历
from py2neo importNode, Relationship
a= Node('Person', name='Alice')
b= Node('Person', name='Bob')
c= Node('Person', name='Mike')
ab= Relationship(a, "KNOWS", b)
ac= Relationship(a, "KNOWS", c)
w= ab + Relationship(b, "LIKES", c) +acprint(w)>>> (alice)-[:KNOWS]->(bob)-[:LIKES]->(mike)
from py2neo importwalkfor item inwalk(w):print(item)#从 a 这个 Node 开始遍历,然后到 b,再到 c,最后重新回到 a
>>>(alice:Person {name:"Alice"})
(alice)-[:KNOWS]->(bob)
(bob:Person {name:"Bob"})
(bob)-[:LIKES]->(mike)
(mike:Person {name:"Mike"})
(alice)-[:KNOWS]->(mike)
(alice:Person {name:"Alice"})print(w.start_node()) #获取起始节点
>>> (alice:Person {name:"Alice"})print(w.end_node()) #获取终止节点
>>> (alice:Person {name:"Alice"})print(w.nodes()) #所有节点的元祖
>>> ((alice:Person {name:"Alice"}), (bob:Person {name:"Bob"}), (mike:Person {name:"Mike"}), (alice:Person {name:"Alice"}))print(w.relationships()) #所有关系的元祖
>>> ((alice)-[:KNOWS]->(bob), (bob)-[:LIKES]->(mike), (alice)-[:KNOWS]->(mike))
6.查询
6.1 传统方式
graph =Graph()#其中的数字对应的是节点,ID#这个ID不按顺序来的,要注意
graph.nodes[1234]
graph.nodes.get(1234)
6.2 match方式
test_graph.data("MATCH (a:Person {name:'You'}) RETURN a")>>> [{'a': (c7d1cb9:Person {name:"You"})}]
list(test_graph.run("MATCH (a:Person {name:'You'}) RETURN a"))>>>[('a': (c7d1cb9:Person {name:"You"}))]
test_graph.run("MATCH (a:Person {name:'You'}) RETURN a").data()>>>[{'a': (c7d1cb9:Person {name:"You"})}]#查询关系
test_graph.run("MATCH (a:Person {name:'You'})-[b:FRIEND]->(c:Person {name:'Johan'} ) RETURN a,b,c")#graph查询
graph.run("MATCH (n:leafCategory) RETURN n LIMIT 25").data() #list型
graph.run("MATCH (n:leafCategory) RETURN n LIMIT 25").to_data_frame() #dataframe型
graph.run("MATCH (n:leafCategory) RETURN n LIMIT 25").to_table() #table
6.3 find方式
#节点个数
len(graph.nodes)
len(graph.nodes.match("leafCategory")) #某类别的节点个数
#查找全部, 可根据label、property_key、property_value、limit查找
graph=test_graph.find(label='Person')for node ingraph:print(node)>>>(b54ad74:Person {age:18,name:"Johan"})
(b1d7b9d:Person {name:"Rajesh"})
(cf7fe65:Person {name:"Anna"})
(d780197:Person {name:"Julia"})#查找单节点, 可根据label、property_key、property_value查找
test_graph.find_one(label='Person',property_key='name',property_value='You')>>> (c7d1cb9:Person {name:"You"})#该节点是否存在
test_graph.exists(graph.nodes[1234])
6.4 NodeMatcher方式(py2neoV4适用)
test_graph = Graph(password='123456')
selector=NodeMatcher(test_graph)#selector = NodeSelector(test_graph) 适用py2neoV3
list(selector.select("Person", name="Anna"))#筛选 age 为 21 的 Person Node
list(selector.select("Person").where("_.name =~ 'J.*'", "1960 <= _.born < 1970"))#排序功能
persons = list(selector.select('Person').order_by('_.age'))#主要方法
first()返回单个节点
limit(amount)返回底部节点的限值条数
skip(amount)返回顶部节点的限值条数
order_by(*fields)排序
where(*conditions, **properties)筛选条件
6.5 match()或match_one()
for rel in test_graph.match(start_node=node3, rel_type="FRIEND"):print(rel.end_node()["name"])>>>Johan
Julia
Andrew#match_one
test_graph.match_one(start_node=node3, rel_type="FRIEND")>>> (c7d1cb9)-[:FRIEND]->(b54ad74)
7.更新
## push的用法
node = test_graph.find_one(label='Person')
node['age'] = 18test_graph.push(node)print(test_graph.find_one(label='Person'))>>> (b54ad74:Person {age:18,name:"Johan"})## update() 方法## setdefault()方法## 直接赋值法,会覆盖原有的
8.删除
delete(subgraph) 删除节点、关系或子图
delete_all() 删除数据库所有的节点和关系from py2neo importGraph
graph= Graph(password='123456')
node= graph.find_one(label='Person')
relationship= graph.match_one(rel_type='KNOWS')
graph.delete(relationship)
graph.delete(node)#在删除 Node 时必须先删除其对应的 Relationship,否则无法删除 Node。
neo4j 登录认证_neo4j相关推荐
- 基于jwt的用户登录认证
最近在app的开发过程中,做了一个基于token的用户登录认证,使用vue+node+mongoDB进行的开发,前来总结一下. token认证流程: 1:用户输入用户名和密码,进行登录操作,发送登录信 ...
- mod_authn_dbd和mysql_使用Apache的mod_authn_dbd和PostgreSQL实施HTTP Basic登录认证
[STEP1] 使用PostgreSQL的客户端pgAdmin登录数据库,做成用户认证表.字段名和表名任意,如 1 CREATETABLEusrinfo2 (3 useridcharactervary ...
- Java 实现 SSH 协议的客户端登录认证方式
摘自:http://blog.sae.sina.com.cn/archives/333/comment-page-1#comment-37391 简介: 本文首先对 SSH 协议的基础知识作以介绍,然 ...
- MySQL通讯协议研究2(登录认证)
今天看登录认证,需要指出的是MySQL支持多种登录方式,而且支持SSL,我们只看最简单的,基础流程如下: Client Server| handshake ||<---------------- ...
- 用Discuz/UCenter账号实现Wifi登录认证
如果你有一个用Discuz/UCenter构建的网站,还有自己的Wifi基站或热点,那你可以用Wiwiz为你的Wifi热点做一个入口登录页面.当 wifi终端用户连到你的热点时,打开任何网页都会先显示 ...
- Asp.Net MVC3.0网站统计登录认证的在线人数
前言 对于一个网站来说,统计在线人数是一个很重要的工作.平时也发现很多的网站论坛等都有在线人数的显示.对于一个网站如果在线人数很多,用户看到了这么个数字也是很了不起的事情.由于之前对于这个知识点只是知 ...
- Shell批量SSH免交互登录认证
脚本实现功能:批量或单个SSH免交互登录认证 脚本应用场景:当部署集群时,大多数实现要配置好管理节点与从节点的SSH免交互登录,针对这样的情况,写了下面脚本,简化工作. 脚本支持系统:Ubuntu和C ...
- Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案
Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案 参考文章: (1)Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录 ...
- 自定义request_Spring Security 自定义登录认证(二)
一.前言 本篇文章将讲述Spring Security自定义登录认证校验用户名.密码,自定义密码加密方式,以及在前后端分离的情况下认证失败或成功处理返回json格式数据 温馨小提示:Spring Se ...
最新文章
- 基于SSH的在线音乐点评网站-java在线音乐点评网站
- python的__init__几种方法总结【转载】
- 1063. Set Similarity (25)
- 干货:如何正确描述存储IO类型?
- 清明出游,在高速上堵了16个小时。
- 在RH6.5上安装sublime3 build3103步骤
- Day 41 Rsync备份
- 单webview上拉刷新下拉加载
- R工程化—Rest API 之plumber包
- 24. flock() 函数
- RPM软件包管理(安装、卸载、查询、制作)
- android个人日记本论文,手机app移动开发论文-个人心情日记本的设计实现 毕设论文.doc...
- ROS--基于机器人操作系统设计与实现
- 微信小程序新手向——界面布局
- 期权定价模型之Heston模型--参数校准与定价【附python代码】
- 老毛桃U盘启动,装Linux
- Azure SQL 数据库仓库Data Warehouse (3) DWU
- 设置word表格行高
- 二进制输入记录(bi)
- 谷歌工程师薪资有多少 羡慕嫉妒恨