2016-03-18 14 views
1

Düğüm nesnesinin derin bir kopyasını oluşturmak ve neo4j veritabanında değil, sıradan bir kapta (liste gibi) saklamak mümkün mü? Yapmam gereken şey, veri tabanını oluşturduğum bir düğümün kopyasını çıkarmak, daha sonra kopyanın belirli özelliklerini değiştirmek ve geçici olarak saklamak. Ve sadece daha sonra veri tabanına birleştirin.py2neo: Düğümün Derin Kopyasını Yap ve Yerel Olarak Sakla

cevap

0

Py2neo Node nesneler, düğümü uzaktaki (veritabanında) karşılık gelen düğümden ayıran bir unbind yöntemine sahiptir. Yani, bazı Düğüm nesneleri getirmek onları unbind ve bunları bir listeye kaydedebilirsiniz:

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'}>] 

Düğüm nesneleri bir LabelSet (içerir:

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'}>] 

Düğüm nesnesi ayrıca turşu serileştirme/deserialization desteklemek set alt sınıfı ve PropertySet (dict'un bir alt sınıfıdır) bu yüzden eğer bir derin yazı yapmak istiyorsanız, bu iki nesneyi bir Düğüm örneğindeki yakalamanız gerekir.

İlgili konular