我在Neo4j中有一个相当大的图,需要用它做一些计算工作。这就是为什么我需要在HPC集群上这样做。到目前一切尚好。但是我的程序多次访问neo4j图,这在集群上是做不到的。这就是我想用pickle.dump()转储图形对象的原因。不幸的是,我遇到了一个错误:
文件"...myFile.py",第9行,在pickle.dump中(图(“螺栓:/localhost:7474/”,auth=("neo4j","0000")),f) AttributeError:不能选择本地对象‘ConnectionPool.connect.’
我的(简化)代码:
import pickle
from py2neo import Graph
graph2 = Graph("bolt:///localhost:7474/", auth=("neo4j", "0000"))
with open('graph.pkl', 'wb') as f:
pickle.dump(Graph("bolt:///localhost:7474/", auth=("neo4j", "0000")), f)
with open('graph.pkl', 'rb') as f:
graph = pickle.load(f)
print("Hello")
有人能告诉我,为什么我会犯这个错误(可能的话,如何消除它)?先谢谢你。
发布于 2021-09-11 03:52:25
我猜您得到了这个错误,因为您不仅试图转储节点和关系,而且还要转储Graph的整个实例,包括函数等等。
我不清楚这个垃圾堆会如何帮助你实现你的目标。
不过,这个答案看上去很含糊:https://stackoverflow.com/a/31809054/2403344
这个想法是从您的Python创建一个Python。这个可以被腌制等。
发布于 2021-09-11 03:58:13
您需要做的是实现__getstate__
和__setstate__
。有关示例,请参见这里。为了实现这些方法,我认为您必须扩展Graph
。
https://stackoverflow.com/questions/69129161
复制相似问题