py2neo第一章:先了解点数据类型

文章目录

    • 一、py2neo.data - Data Types
      • 1.1 Node 用于操作结点
      • 1.2 Relationship 用于操作关系,有几个重构的Relationship类
      • 1.3 Properties
      • 1.4 Subgraphs
      • 1.5 Path objects and Walkable Types
      • 1.6 Record objects
      • 1.7 Table objects

一、py2neo.data - Data Types

常用包Node,Relationship,Properties,Subgraph,Walkable

学习单词:类扩展:extend class;基类:base class;派生类:derived class;遍历:traversal;连接:concatenating;
对称差分:Symmetric difference;交集:intersection;并集:union;可交替的:alternating;字段:field;bracketed syntax

1.1 Node 用于操作结点

class Node(*labels, **properties)
	node == other # 如果相等返回True,可以用于判断。结点相等是仅依赖于它们的远程结点ID是否相等(neoj为每一个结点自动加上一个ID),无关于它们的属性或者标签是否相等。
	node != other # 如果结点不相等返回True
	hash(node)# 如果未绑定远程结点则返回一个基于其结点ID的哈希散列,如果绑定了则返回它所代表的远程结点的ID。
	node[key]# 返回这个结点的这个属性key的属性值,如果没有这个key就返回none。
	node[key]# 添加或设置这个节点的属性以及属性值
	len[node]# 返回节点的属性的数量
	dict[node]# 以字典形式返回节点的所有属性
	walk(node)# 将结点作为walk()中的唯一项
	labels()# 返回与这个节点相关联的全部标签
	has_label(label)# 如果有这个标签就返回True
	add_label(label)
	remove_label(label)
	clear_labels()
	update_labels(labels)# 从可迭代标签中向结点添加多个标签,如一个标签list
walk(*walkables) # 按顺序遍历所有提供的参数,产生交替的结点和关系

1.2 Relationship 用于操作关系,有几个重构的Relationship类

class Relationship(start_node, type, end_node, **properties)# 构建一个关系类型为type(start_node)-[:type]->(end_node)的关系,并且设置关系的属性。
class Relationship(start_node, end_node, **properties)# 构建一个关系类型为默认为to(start_node)-[:to]->(end_code)的关系,并且设置关系的属性,这个默认值可以通过括展关系类来覆盖
class Relationship(node, type, **properties)# 
class Relationship(node, **properties)
	relationship == other# 如果关系相等则返回True,关系相等是基于开始结点start_node,终止结点end_node,关系类型type;也就是同一组结点之间有着任意相同的关系类型(方向相同,type相同)则认为这两关系相等。
	relationship != other # 如果关系不相等,则返回True
	hash(relationship)# 基于开始和结束结点以及type返回一个关系的哈希散列
	relationship[key]# 返回关系属性key的属性值,如果为空就返回None、
	relationship[key] = value
	del relationship[key]
	len(relationship)
	dict(relationship)
	walk(relationship)# 执行一次walk(),按顺序返回关系的开始结点,关系自己,和它的结束结点。
	type()# 返回关系的类型

1.3 Properties

Node和Relationship都扩展了PropertyDict类,PropertyDict类本身扩展了Python的内置字典,。这意味着结点和关系都是可以按键索引的属性值的映射类型。
与Neo4j本身一样,属性值可能不是None,缺少属性(即没有键存在)是建模缺少值的惯性方法

class PropertyDict(iterable, **kwargs)
	properties == other#如果在从other中删除所有None值后,properties等于other,则返回True。
	properties != other
	properties[key] = value
	setdefault(key, default=None)# 如果key在PropertyDict中,则返回它的值。如果没有,则插入值为default的键并返回default,除非default为None,在这种情况下不执行任何操作。默认值为None。
	update(iterable=None, **kwargs)

1.4 Subgraphs

Subgraph(子图)是结点和关系的集合,构造(construct)子图最简单的方法是使用【标准集操作】组合结点和关系。
Subgraph是一组不可变的结点和关系,可以作为参数提供给许多图数据函数。
Subgraph 还用作Node、Relationship和Walkable类的基类,允许使用集合操作这些类的实例。

s = ab | ac
print(s)
# {(alice:Person {name:"Alice"}),
#	(bob:Person {name:"Bob"}), 
#	(carol:Person {name:"Carol"},
#	(alice)-[:KNOWS]->(bob), 
#	(alice)-[:WORKS_WITH]->(carol)}
print(s.nodes())
# frozenset({(alice:Person {name:"Alice"}),
#           (bob:Person {name:"Bob"}),
#           (carol:Person {name:"Carol"})})
print(s.relationships()
#frozenset({(alice)-[:KNOWS]->(bob),
#           (alice)-[:WORKS_WITH]->(carol)})
class Subgraph(nodes,relationships)
	subgraph | other |...# Union.将子图取并集,并在一起,返回一个全新的子图,去除重复实体。
	subgraph & other &...# Intersection.将子图取交集。
	subgraph - other -...# Difference.返回一个新的子图,类似减法,但对关系的减法不太一样,其中删除掉在other子图中与subgraph中都有的结点和关系,而如果删除subgraph中的关系时,与这个关系相连的任何结点即使不在这个子图中,也要全部删除。
	subgraph ^ other ^...# Symmetric difference.返回一个新的子图,类似于异或,找出每个子图中不在其他子图中存在的结点和关系,也包含与这个关系相连的所有节点,即使这些结点在子图或其他子图中。
	subgraph.keys()# 返回一个集合包括子图中所有的结点和关系的属性
	subgraph.labels()# 返回一个集合包含子图中所有节点的标签
	subgraph.nodes()# 返回一个集合包含所有子图的节点
	subgraph.relationships()# 返回一个集合包含子图的所有关系
	subgraph.types()# 返回一个集合包含子图的所有关系的类型type

order(subgraph)# 返回子图的结点的数量,这参数可以是子图的实例,也可以是任何子图派生类的实例,比如Path。
size(subgraph)# 返回子图的关系的数量,这参数可以是子图的实例,也可以是任何子图派生类(derived class)的实例,比如Path。

1.5 Path objects and Walkable Types

Walkable是一个添加了遍历(traversal)信息的子图。构建Walkable的最简单方法是连接(concatenating)其他图形对象。

w = ab +Relationship(b,'likes',c)+ac
w # (alice)-[:KNOWS]->(bob)-[:LIKES]->(carol)<-[:WORKS_WITH]-(alice)

遍历Walkable对象可以通过walk()函数,该函数生成可交替的结点和关系,始终以结点开始和结束。任何结点和关系都可以在任何方向上遍历一遍或多遍。

class Walkable(iterable)
	walkable + other +...# concatenation(连接).类似于成语接龙。返回一个新的Walkable包含一个对Walkable的walk()并紧接着other的walk()。这种可以连接当且仅当walkable的结束结点是other Walkable的开始结点,或者walkable的开始结点是other Walkable的结束结点。
	walk(walkable)# 运行Walkable的walk()函数,生成交替的结点和关系。
	start_node()# 返回这个对象通过walk()函数的第一个结点。
	end_node()# 返回这个对象通过walk()函数的最后一个结点。
	nodes()# 返回这个walkable通过walk()函数的按顺序的结点元组。
	relationships()# 返回这个walkable通过walk()函数的按顺序的关系元组。
class Path(*entities)# Path是一种walkable的类型,由一些Cypher查询返回。
walk(*walkables)# 按顺序遍历所有提供的参数,生成交替的结点和关系。

1.6 Record objects

Record 对象保存一个有序的,键控的集合,它在很多方面类似于被命名的元组(tuple),但只允许通过括号语法访问字段,并提供更多功能。Record扩展了元组和映射,每个元组元素被映射在键上。

class py2neo.data.Record(iterable=)
	record[index]
	record[key]# 通过特定的键key或索引index返回值
	len(record)# 返回record的字段数
	dict(record)# 返回记录的字典格式
	data(*keys)# 以键值对的形式返回一个字典,只会选择*key或*index与其对应的值,如果*key中有key不在record中,依然会作为返回值,不过其值设为None;*index如果超出范围会报错。
	get(key,default=None)# 从record中按照键key或者索引index获取一个值,如果这个项不存在,则按默认值返回。
	index(key)# 返回键的index
	items(*keys)# 将记录的字段作为键列表和值元组返回,参数是项的键keys或indexs,如果为空,就全部包括,返回值是(key,value)元组的列表
	keys()# 返回记录的键keys
	to_subgraph()# 返回包含所有此记录中所有图形结构的union的子图。返回的是Subgraph对象。
	values(*keys)# 返回记录的值,根据索引或键选择过滤以只包含某些值。

1.7 Table objects

Table保存一个Record的列表,通常作为Cypher查询的结果接收。它提供了一个方便的容器来完整地处理结果,并提供了转换成各种输出格式的方式,Table extends list。

class py2neo.data.Table(records, keys=None)
	repr(table)# 返回用的ASCII码表示此table的字符串。在内部这个方法通过header=True调用writer(),将输出写入一个 io.StringIO 实例。
	_repr_html_()# 返回用HTML表示的table的字符串。这个方法是用于jupyter notebook去在本地浏览器上展示。在内部这个方法通过header=True调用writer()将输出写入一个 io.StringIO 实例。
	keys()# 返回这个表的字段的列表
	field(key)# 以字典形式返回一个给定字段的元数据。元数据包括以下内容 type:表示字段值的单个类或者类classes的元组,numeric:如果所有字段是一个数字类型就为True,否则为False,optional:如果任意字段都为None,则为True,否则为False。
	write(file=None, header=None, skip=None, limit=None, auto_align=True, padding=1, separator='|', newline='\r\n')# 将数据写人们可读的ASCII表中。
	# file:能够接收输出的类似文件的对象;
	# header:布尔型,用于添加列标题;
	# skip:在输出之前要跳过的记录数;
	# limit:要输出的记录的最大数;
	# auto_align:如果为真,右对齐数值;
	# padding:要在分割符之间包含的空格数;
	# seperetor:列分割符;
	# newline:换行符;
	#返回值为在输出中记录的数量
	write_html(file=None,header=None,skip=None,limit=None,auto_align=True)# 将数据写入HTML表
	write_separated_values(separator, file=None, header=None, skip=None, limit=None, newline='\r\n', quote='"')# 将数据写入分隔符分隔的文件
	# quote:引用符
	write_csv(file=None, header=None, skip=None, limit=None)#将数据编写 为rfc4180兼容的逗号分割符。
	write_tsv(file=None, header=None, skip=None, limit=None)# 将数据写入为制表符分隔的值

你可能感兴趣的:(Python,python,neo4j)