Neo4j py2neo:制作节点的深度副本并将其存储在本地
是否可以制作节点对象的深度副本并将其存储在任何普通容器(如列表)中,而不存储在neo4j数据库中?我需要做的是创建一个从数据库检索的节点的副本,然后修改副本的某些属性并临时存储它。然后再将其合并到数据库中。Py2neoNeo4j py2neo:制作节点的深度副本并将其存储在本地,neo4j,nodes,deep-copy,py2neo,Neo4j,Nodes,Deep Copy,Py2neo,是否可以制作节点对象的深度副本并将其存储在任何普通容器(如列表)中,而不存储在neo4j数据库中?我需要做的是创建一个从数据库检索的节点的副本,然后修改副本的某些属性并临时存储它。然后再将其合并到数据库中。Py2neoNode对象有一个unbind方法,该方法将使节点与其远程对应节点(在数据库中)分离。因此,您可以获取一些节点对象,解除它们的绑定,并将它们保存到列表中: node_list = [] for node in graph.find("Person"): node.unbin
Node
对象有一个unbind
方法,该方法将使节点与其远程对应节点(在数据库中)分离。因此,您可以获取一些节点对象,解除它们的绑定,并将它们保存到列表中:
node_list = []
for node in graph.find("Person"):
node.unbind()
node_list.append(node)
node_list
------------
[<Node labels={'Person'} properties={'name': 'Jim'}>,
<Node labels={'Person'} properties={'name': 'Anna'}>,
<Node labels={'Person'} properties={'name': 'Sally'}>,
<Node labels={'Person'} properties={'name': 'Joe'}>,
<Node labels={'Person'} properties={'name': 'Bob'}>,
<Node labels={'Person'} properties={'name': 'Mike'}>,
<Node labels={'Person'} properties={'name': 'Billy'}>]
node_list=[]
对于graph.find(“Person”)中的节点:
node.unbind()
node\u list.append(节点)
节点列表
------------
[,
,
,
,
,
,
]
节点对象还支持pickle序列化/反序列化:
import pickle
pickle.dump(node_list, open("nodes.p", "wb"))
node_list_from_pickle = pickle.load(open("nodes.p", "rb"))
node_list_from_pickle
---------------------
[<Node labels={'Person'} properties={'name': 'Jim'}>,
<Node labels={'Person'} properties={'name': 'Anna'}>,
<Node labels={'Person'} properties={'name': 'Sally'}>,
<Node labels={'Person'} properties={'name': 'Joe'}>,
<Node labels={'Person'} properties={'name': 'Bob'}>,
<Node labels={'Person'} properties={'name': 'Mike'}>,
<Node labels={'Person'} properties={'name': 'Billy'}>]
导入pickle
pickle.dump(节点列表,打开(“nodes.p”、“wb”))
节点\u列表\u from\u pickle=pickle.load(打开(“nodes.p”、“rb”))
节点\u列表\u来自\u pickle
---------------------
[,
,
,
,
,
,
]
节点对象包含一个LabelSet(它是
set
的子类)和PropertySet(它是dict
的子类),因此如果您真的想进行deepcopy,您只需要在节点实例中获取这两个对象 Py2neoNode
对象有一个unbind
方法,该方法将节点与其远程对应对象(在数据库中)分离。因此,您可以获取一些节点对象,解除它们的绑定,并将它们保存到列表中:
node_list = []
for node in graph.find("Person"):
node.unbind()
node_list.append(node)
node_list
------------
[<Node labels={'Person'} properties={'name': 'Jim'}>,
<Node labels={'Person'} properties={'name': 'Anna'}>,
<Node labels={'Person'} properties={'name': 'Sally'}>,
<Node labels={'Person'} properties={'name': 'Joe'}>,
<Node labels={'Person'} properties={'name': 'Bob'}>,
<Node labels={'Person'} properties={'name': 'Mike'}>,
<Node labels={'Person'} properties={'name': 'Billy'}>]
node_list=[]
对于graph.find(“Person”)中的节点:
node.unbind()
node\u list.append(节点)
节点列表
------------
[,
,
,
,
,
,
]
节点对象还支持pickle序列化/反序列化:
import pickle
pickle.dump(node_list, open("nodes.p", "wb"))
node_list_from_pickle = pickle.load(open("nodes.p", "rb"))
node_list_from_pickle
---------------------
[<Node labels={'Person'} properties={'name': 'Jim'}>,
<Node labels={'Person'} properties={'name': 'Anna'}>,
<Node labels={'Person'} properties={'name': 'Sally'}>,
<Node labels={'Person'} properties={'name': 'Joe'}>,
<Node labels={'Person'} properties={'name': 'Bob'}>,
<Node labels={'Person'} properties={'name': 'Mike'}>,
<Node labels={'Person'} properties={'name': 'Billy'}>]
导入pickle
pickle.dump(节点列表,打开(“nodes.p”、“wb”))
节点\u列表\u from\u pickle=pickle.load(打开(“nodes.p”、“rb”))
节点\u列表\u来自\u pickle
---------------------
[,
,
,
,
,
,
]
节点对象包含一个LabelSet(它是set
的子类)和PropertySet(它是dict
的子类),因此如果您真的想进行deepcopy,您只需要在节点实例中获取这两个对象