Python操作之Neo4j(一)
目录
连接Neo4j图数据库
首先下载py2neo第三方包
pip install py2neo
忘记neo4j密码
打开neo4j安装目录的dbms文件夹,找到auth文件并删除,重新启动neo4j,此时使用浏览器访问neo4j就可以使用默认的用户名密码登录,之后再修改自己的账号密码。
重启neo4j数据库可以打开服务,找到neo4j graph database进行重启
连接neo4j
from py2neo import Graph, Node, Relationship
##连接neo4j数据库,输入地址、用户名、密码
##注意:这句代码适用老版的py2neo,即适用于2021.1之前的
graph = Graph('http://localhost:7474', username='neo4j', password='lyq0807582')
##适用于新版
graph = Graph('http://localhost:7474', auth=("neo4j", "lyq0807582"))
matcher = NodeMatcher(graph) #创建关系需要用到
增加节点和关系
##创建结点
node_1 = Node(label='book', name='黄帝内经') #label标签名book ,name属性名黄帝内经
node_2 = Node('book', name='素问')
node_3 = Node('book', name='灵枢')
node_4 = Node('book', name='内经')
graph.create(node_1)#节点创建到数据库
graph.create(node_2)
graph.create(node_3)
graph.create(node_4)
增加节点成功表示连接成功,可以进行相应的操作
# ##创建关系
# # 分别建立了node_1指向node_2和node_3,node_1指向node_4三条关系,关系的类型为"包括、包括、别称"。
node_1_include_node_2 = Relationship(node_1, '包括', node_2)
node_1_include_node_3 = Relationship(node_1, '包括', node_3)
node_1_elsename_node_4 = Relationship(node_1, '别称', node_4)
graph.create(node_1_include_node_2)
graph.create(node_1_include_node_3)
graph.create(node_1_elsename_node_4)
重复运行创建节点代码将会重复创建相同的节点
删除节点和关系
#删除指定节点,只删除一个没有关系节点
node=matcher.match('book').where(name='黄帝内经').first() #先匹配,叫黄帝内经的第一个结点
graph.delete(node)
#删除指定关系和节点
b = list(matcher.match('book').where(name='黄帝内经'))[0]
graph.delete(b)
查找节点和关系
#查找所有节点
for node in graph.nodes:
print(graph.nodes[node])
#查询指定节点
n=graph.nodes.match("book")
for i in n:
print(i)
#查找所有关系
rps = graph.relationships
for r in rps:
print(rps[r])
#删除有关内经的节点和关系
try:
graph.run('match(n:book{name:"内经"}) detach delete n')
print('删除成功')
except:
print('删除失败')
#转化为numpy数据
b = graph.run('match(n:book) return *').to_ndarray()
print(b)
#以字典列表的形式返回查询的结果数据
b = graph.run('match(n:book) return *').data()
print(b)