Py2neo v4 使用笔记(一)

Neo4j是一款开源的图数据库,简单易学,而py2neo是python中可以与Neo4j对接的库,两者的介绍参见:Neo4j简介及Py2Neo的用法

这篇博客文章对py2neo的使用介绍也很详尽,但是是v3版本,v4版本还是有些更新,所以在这里记录一下py2neo v4的用法,主要参考py2neo v4 handbook


安装

pip install py2neo

或者从github源码安装

pip install git+https://github.com/technige/py2neo.git#egg=py2neo

1.数据类型-py2neo.data

1.1节点和关系

创建节点和关系

>>> from py2neo.data import Node, Relationship

>>> a = Node("Person", name="Alice")

>>> b = Node("Person", name="Bob")

>>> ab = Relationship(a, "KNOWS", b)

>>> ab

(Alice)-[:KNOWS]->(Bob)

上述创建的节点是未绑定的(unbound),也就是只存在于python这个客户端(client)中,并不存在于neo4j的服务器端(server),确实,我们neo4j都还没有安装启动呢。

在neo4j中创建的节点才是绑定的(bound)节点,在neo4j中创建的节点又叫做远程节点(remote node)。

下面这两个语句返回True or Flase,用来判断两个节点是否相等,判断的标准是节点的ID,而不是节点的标签、属性之类的。只有两个节点绑定到同一个远程节点,才会被判定为相等。

nodeA == nodeB

nodeA != nodeB

关于节点属性的一些操作如下:

node[key] = value #给节点属性赋值

del node[key] #删除节点属性

len(node) #节点属性的个数

dict(node) #返回字典,包括了该节点的所有属性

关于节点标签的一些操作如下:

node.labels #返回节点的所有标签

labelA in node.labels #如果节点具有标签labelA,返回True

node.labels.add(labelB) #给节点增加标签labelB

node.labels.discard(labelC) #删除节点标签labelC

node.labels.remove(labelC) #同上,但是如果labelC不存在的话会返回ValueError

node.labels.clear() #清除节点所有标签

node.labels.update(manylabels) #从可迭代对象manylabels中给节点增加多个标签

节点终于讲完了,还记得最开始我们还创建了一个关系吧?

>>> ab = Relationship(a, "KNOWS", b)

实际上,关系的创建有多种方式,上面是一种常见的方式,a、b分别是起始节点和终止节点,“KNOWS”是关系的类型(type),如果不写默认是“TO”;关系也可以从某个节点指向它自己,也就是下面的第三、第四种方式:

Relationship(start_node,type,end_node,**properties)

Relationship(start_node,end_node,**properties)

Relationship(node,type,**properties)

Relationship(node,**properties)

此外,还可以给关系赋予属性(properties)

>>> ab['time'] = '2019/04/01'

关系的一些其他操作如下

relationshipA == relationshipB

relationshipA != relationshipB #判断两个关系是否相等,但是和节点不同,这里只要起始、终止节点和关系类型相同,就判定两个关系相等

del relationship[key] #删除属性

len(relationship) #返回属性个数

dict(relationship) #返回字典,包括所有属性

type(relationship) #返回关系的类型

这一篇到此为止,下一篇预计包括subgraph和walkable对象

推荐阅读更多精彩内容