登录
neo4j退出页面重新登录
:server disconnect
注:在左侧进入用户界面选取system选项,否则不能创建用户
用户创建;
CALL dbms.security.createUser(name,password,requridchangepassword)
其中name参数是你的用户名,password是密码,requridchangepassword是表示是否需要修改密码,布尔类型。如下创建一个test1用户,密码是test1,不需要修改密码。
CALL dbms.security.createUser('test','test',false)
查看当前用户
CALL dbms.showCurrentUser()
查看所有用户
CALL dbms.security.listUsers()
删除用户
CALL dbms.security.deleteUser('username')
username参数表示你要删除的用户名。
修改密码
CALL dbms.security.changePassword('password')
注意:password参数不能为空,或者跟原密码相同,不然会报错
忘记密码
1.找到DBMS文件夹下/conf/neo4j.conf文件,修改以下属性为false:
dbms.security.auth_enabled=false
2.在浏览器终端,执行以下语句,切换到system用户:
:use system
3.修改neo4j用户的密码:
ALTER USER neo4j SET PASSWORD '123456';
4.关闭neo4j,将修改的conf配置文件修改回去或注释掉:
dbms.security.auth_enabled=true
#dbms.security.auth_enabled=false
5.重启neo4j即可。 官方文档:neo4j.com/docs/operat…
删除数据库
match (n) detach delete n
查询指令
MATCH p=(n:Node)-[r]->() where n.name = 'The Kentucky Fried Movie' RETURN p #匹配对应节点的所有关系和节点
MATCH p=(nn:Node)-[r]->(n:Node) where ID(nn) = 9 RETURN p #也可改写为ID匹配条件 若匹配nn的ID则输出子图均为箭头朝外,若匹配n的ID则输出子图均为箭头朝内
match(n:Node) where n.name='Thelma Todd' return n #匹配指定节点
match q=(n:Node)-[r:directed_by|written_by|starred_actors]-()-[r2:directed_by|written_by|starred_actors]-()-[r3:release_year]-() where n.name="Fool's Gold" return q #查询深度为3的路径,每层深度的关系按照指定的命令查询
MATCH p=()-[*4..5]-() RETURN p LIMIT 200 #查询深度4到5的路径图
创建节点
CREATE(n) #创建一个节点
CREATE(n:Movie) #创建一个带有Movie标签的节点
CREATE(n:Movie:Person) #创建带有多个标签(Movie、Person)的节点
CREATE(n:TEST {name:'TEST-NAME1', age:2}) return n # 创建一个带有标签(TEST)和属性(name:'TEST-NAME', age:1)的节点
创建关系
创建两个节点之间的关系
MATCH (a:TEST),(b:TEST)
WHERE a.name = 'TEST-NAME' AND b.name = 'TEST-NAME1'
CREATE (a)-[r:RELTYPE] -> (b)
RETURN r
创建两个节点之间的关系,并调用两个节点的属性
MATCH (a:TEST),(b:TEST)
WHERE a.name = 'TEST-NAME' AND b.name = 'TEST-NAME1'
CREATE (a)-[r:RELTYPE { name: a.name + b.name}] -> (b)
RETURN r
创建3个节点,两个关系的路径
CREATE p = (a:TEST{name:'TEST-NAME'}) - [:rel3] -> (node) <- [:rel3] - (b:TEST{name:'TEST-NAME1'})
RETURN p
修改Neo4j中节点的颜色
:style
将以下代码保存为color.grass,之后拖拽进neo4j的界面
node {
diameter: 50px; //全部节点的大小
color: #A5ABB6;
border-color: #9AA1AC;
border-width: 2px;
text-color-internal: #FFFFFF;
font-size: 16px; //节点字体的大小
}
relationship {
color: #A5ABB6;
shaft-width: 1px;
font-size: 12px;
padding: 3px;
text-color-external: #000000;
text-color-internal: #FFFFFF; //所有关系边的文本颜色
caption: "<type>";
}
node.Node {
color: #C0504D; //类型为Node这个节点的颜色
border-color: #9B3937; //类型为Node这个节点的边框颜色
text-color-internal: #FFFFFF; //文本颜色
defaultCaption: "<id>";
caption: "{name}";
diameter: 80px; //节点大小
}
relationship.starred_actors {
shaft-width: 3px;
}
relationship.directed_by {
shaft-width: 3px; //边的粗细
color: #F16667; //对应关系边的颜色
border-color: #eb2728; //边的边框颜色
text-color-internal: #FFFFFF; //边的文本颜色
}
relationship.release_year {
shaft-width: 3px;
}
relationship.has_tags {
shaft-width: 3px;
}
relationship.written_by {
shaft-width: 3px;
}
relationship.has_genre {
shaft-width: 3px;
}
relationship.in_language {
shaft-width: 3px;
}
relationship.has_imdb_votes {
shaft-width: 3px;
}
relationship.has_imdb_rating {
shaft-width: 3px;
}
将csv文件导入数据库
文件内容格式
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : txt2neo.py
# @Time : 2023/4/17 15:40
import pandas as pd
from py2neo import Graph, Node, Relationship, NodeMatcher
def txt2csv(txtname):
df = pd.read_csv(txtname, delimiter="|",
# names=["S", "P", "O"]
)
# print(df)
df.to_csv("tiny_kb1.csv", encoding='utf-8', index=False)
def csv2neo():
# 读取Excel文件
df = pd.read_csv('pseudo.csv', names=["S", "P", "O"])
# 取前610行作为图谱数据
# df = df.iloc[:706, :]
# 连接Neo4j服务
# graph = Graph('http://localhost:7474/',auth=("neo4j","neo4j")) # 这种写法无效
graph = Graph(host="localhost", auth=("neo4j", "neo4j"))
# 创建节点
nodes = set(df['S'].tolist()+df['O'].tolist())
for node in nodes:
node = Node("Node", name=node)
graph.create(node)
print('create nodes successfully!')
# 创建关系
matcher = NodeMatcher(graph)
for i in range(df.shape[0]):
S = df.iloc[i, :]['S'] # S节点
O = df.iloc[i, :]['O'] # O节点
s_node = matcher.match("Node", name=S).first()
o_node = matcher.match("Node", name=O).first()
# 创建关系
P = df.iloc[i, :]['P']
relationship = Relationship(s_node, P, o_node)
graph.create(relationship)
print('create relationships successfully!')
print('You can check Neo4j now!')
# MATCH p=(n:Node)-[r]->() where n.name = 'I Am a Sex Addict' RETURN p #匹配对应节点的所有关系和节点
# MATCH p=(nn:Node)-[r]->(n:Node) where ID(nn) = 9 RETURN p #也可改写为ID匹配条件 若匹配nn的ID则输出子图均为箭头朝外,若匹配n的ID则输出子图均为箭头朝内
# match(n:Node) where n.name='Thelma Todd' return n #匹配指定节点
if __name__ == "__main__":
# txtname = "tiny_kb.txt"
# txt2csv(txtname)
csv2neo()