1
ノードオブジェクトのディープコピーを作成してneo4jデータベースではなく通常のコンテナ(リストなど)に格納することはできますか?私がする必要があるのは、データベースから取り出したノードのコピーを作成し、そのコピーの特定のプロパティを変更して一時的に保存することです。そして、後でそれをデータベースに統合するだけです。py2neo:ノードのディープコピーを作成しローカルに保存する
ノードオブジェクトのディープコピーを作成してneo4jデータベースではなく通常のコンテナ(リストなど)に格納することはできますか?私がする必要があるのは、データベースから取り出したノードのコピーを作成し、そのコピーの特定のプロパティを変更して一時的に保存することです。そして、後でそれをデータベースに統合するだけです。py2neo:ノードのディープコピーを作成しローカルに保存する
Py2neo 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オブジェクトもピクルスシリアライズ/デシリアライゼーションのをサポートしています。
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'}>]
NodeオブジェクトがあるLabelSetを(含まれていますサブクラスset
)とPropertySet(サブクラスはdict
)ですので、実際にディープコピーを実行するには、Nodeインスタンス内でこれらの2つのオブジェクトを取得するだけです。