py2neo(2) --操作 Neo4j 图数据库

#encoding:utf-8
#在 database 模块中包含了和 Neo4j 数据交互的 API,最重要的当属 Graph,它代表了 Neo4j 的图数据库,
#同时 Graph 也提供了许多方法来操作 Neo4j 数据库。 Graph 在初始化的时候需要传入连接的 URI,
#初始化参数有 bolt、secure、host、http_port、https_port、bolt_port、user、password, 
#详情说明可以参考:http://py2neo.org/v3/database.html#py2neo.database.Graph。

from py2neo import Graph,Node,Relationship
# #Graph()实例化
graph=Graph("http://localhost:7474",username="neo4j",password="。。。。。。")
# #可以利用 create() 方法传入 Subgraph 对象来将关系图添加到数据库中
#a = Node('Person',name='Alice')
#b = Node('Person', name='Bob')
#r=Relationship(a,'knows',b)
#s=a|b|r 
#graph.create(s)
# #可以单独添加Node或Relationship
#a = Node('Person', name='Mike')
#graph.create(a)
#b = Node('Person', name='Jack')
#ab = Relationship(a, 'KNOWS', b)
#graph.create(ab)
#可以利用 data() 方法来获取查询结果
#data=graph.run("match (p:Person) return p.name ").data()
#print(data)
# [{'p.name': 'bob'}, {'p.name': 'Alice'}, {'p.name': 'Bob'}, {'p.name': 'Jack'}, {'p.name': 'Jack'}, {'p.name': 'Jack'}, {'p.name': 'Mike'}, {'p.name': 'Jack'}, {'p.name': 'Mike'}, {'p.name': 'Mike'}, {'p.name': 'Mike'}]

## 以字典列表的形式返回查询的结果数据 
#g.run('match(p:明星) return *').data()
## 转化为pandas数据
#g.run('match(p:明星) return p.name,p.born').to_data_frame()
## 转化为numpy数据
#g.run('match(p:明星) return p.name,p.born').to_ndarray()
 
#转换为DataFrame
#from pandas import DataFrame
#df=DataFrame(data)
#print(df)
#a = Node('Person', name='Alice', age=21, location='广州')
#b = Node('Person', name='Bob', age=22, location='上海')
#c = Node('Person', name='Mike', age=21, location='北京')
#r1 = Relationship(a, 'KNOWS', b)
#r2 = Relationship(b, 'KNOWS', c)
#graph.create(a)
#graph.create(r1)
#graph.create(r2)

#可以通过 run() 方法直接执行 CQL 语句
#data = graph.run('MATCH (p:Person) RETURN p LIMIT 5')
#print(list(data))

#更改节点或者关系的属性 :

relationships=graph.relationships
print(relationships[63])
relationships[63]['time']='2018/08/31'
graph.push(relationships[63]) graph.push(可以是关系也可以是节点)

https://blog.csdn.net/qq_32795135/article/details/81198978

y2neo的v2和v3版本有两个很简便的查找节点的函数find_one()和find(),但是在v4版本里面不见了。

现在查找节点的操作是这样子的:

from py2neo import Graph, NodeMatcher

graph = Graph()

matcher = NodeMatcher(graph)

matcher.match("Person", name="Keanu Reeves").first()

# 通过节点/关系查找相关联的节点/关系

参考 https://www.jianshu.com/p/a2497a33390f 作者写的很清楚了 

#删除节点  没有关系 

g.run('match(p:Person{name:"alice"}) delete p')

# 删除节点 有 关系的 

g.run('match(p:Person{name:"alice"}) detach delete p')

# OGM 类似于 ORM,意为 Object Graph Mapping,这样可以实现一个对象和 Node 的关联

from py2neo.ogm import GraphObject,Property
# #可以用它来结合 Graph 查询

class Person(GraphObject):
    __primarykey__='name'
    name=Property()
    age=Property()
    location=Property()
    
# #可以用它动态改变 Node 的属性,例如修改某个 Node 的 age 属性    
person=Person.match(graph).where(age=22).first()
print(person.__ogm__.node)
person.age=22
print(person.__ogm__.node)
graph.push(person)
#///  
#可以用它来结合 Graph 查询
peson=Person.match(graph).where(age=21).first() 
print(person)
print(person.name)
print(person.age)
#也可以通过映射关系进行 Relationship 的调整,例如通过 Relationship 添加一个关联 Node
from py2neo.ogm import GraphObject,Property,RelatedTo 
class Person(GraphObject):
    __primarykey__='name'
    name=Property()
    age=Property() 
    location=Property()
    # 连接 什么关系连接什么对象  
    knows=RelatedTo('Person','KNOWS')
person=Person.match(graph).where(age=22).first() 
print(list(person.knows))  # [<Person name='Mike'>]
data=graph.run('match(p:Person{name:"Bob"})--(p1:Person) return *').data()
print(data)
new_person=Person()
new_person.name="druanta"
new_person.age=18
person.knows.add(new_person)
print(list(person.knows))
#这样我们就完成了 Node 和 Relationship 的添加,同时由于设置了 primarykey 为 name,所以不会重复添加。
#但是注意此时数据库并没有更新,只是对象更新了,如果要更新到数据库中还需要调用 Graph 对象的 push() 
#或 pull() 方法,添加如下代码即可:
#graph.push(person)
target=Person.match(graph).where(name="druanta").first()
print(list(person.knows))
person.knows.remove(target) #   #可以通过remove来删除节点间的关系
print(list(person.knows))
graph.push(person)
graph.delete(target)  # #先删除节点上的关系,才能删除节点

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
py2neo是一个用于操作Neo4j数据库的Python库。它提供了一个简单易用的接口,可以通过Python编程语言来管理和查询Neo4j数据库形数据。 通过py2neo,我们可以连接到Neo4j数据库,并使用一些简单的命令进行数据操作。例如,我们可以创建节点、添加属性、创建关系以及执行Cypher查询语句。 要使用py2neo操作Neo4j数据库,首先需要在Python环境中安装py2neo库。安装完成后,我们可以通过以下步骤来操作Neo4j数据库: 1. 连接到数据库:使用py2neoGraph类,我们可以创建一个连接到数据库的对象。我们需要提供Neo4j数据库的URL、用户名和密码。 2. 创建节点:使用Node类,我们可以创建新的节点并添加相关属性。我们可以指定节点的标签和属性值。 3. 创建关系:使用Relationship类,我们可以创建节点之间的关系。我们需要提供起始节点、结束节点和关系类型。 4. 执行查询:使用py2neo的Cypher类,我们可以执行Cypher查询语句来查询数据库中的数据。我们可以通过执行查询来查找符合某些条件的节点或关系。 5. 数据的增删改查:使用py2neo提供的方法,我们可以对节点和关系进行增删改查的操作。我们可以添加属性、修改属性值、删除节点或关系等。 通过这些操作,我们可以灵活地管理和查询Neo4j数据库中的形数据。py2neo提供了简洁、方便和强大的功能,让我们可以通过Python编程语言来处理Neo4j数据库形数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值