【问题标题】:Dump a Graph from Neo4j with pickle in python在 python 中使用 pickle 从 Neo4j 转储图形
【发布时间】:2021-11-06 18:25:29
【问题描述】:

我在 Neo4j 中有一个相当大的图表,需要用它做一些计算。这就是我需要在 HPC 集群上执行此操作的原因。到目前为止,一切都很好。但是我的程序多次访问neo4j 图,这是我在集群上无法做到的。这就是我想用 pickle.dump() 转储图形对象的原因。不幸的是,我收到一个错误:

文件“...myFile.py”,第 9 行,在 pickle.dump(Graph("bolt:///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")

谁能告诉我,为什么我会收到这个错误(以及可能如何摆脱它)?非常感谢您。

【问题讨论】:

    标签: python neo4j pickle attributeerror dump


    【解决方案1】:

    我猜你得到这个错误是因为你不只是试图转储节点和关系,而是 Graph 类的整个实例,包括函数等。

    我不清楚转储将如何帮助您实现目标。
    这个答案看起来很有希望:https://stackoverflow.com/a/31809054/2403344
    这个想法是从你的 Neo4j DB 创建一个 Python iGraph。 然后可以腌制等。

    【讨论】:

      【解决方案2】:

      你需要做的是实现__getstate____setstate__。有关示例,请参阅here。我认为您必须扩展 Graph 才能实现这些方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-23
        • 2014-11-08
        • 2014-05-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多