Python py2neo密码事务失败

Python py2neo密码事务失败,python,neo4j,cypher,py2neo,Python,Neo4j,Cypher,Py2neo,我正试图通过Py2Neo批量导入数百万个节点。 我不知道什么更快,是BatchWrite还是cipher.Transaction,但后者似乎是最好的选择,因为我需要拆分批。 然而,当我试图执行一个简单的事务时,我收到一个奇怪的错误 python代码: session = cypher.Session("http://127.0.0.1:7474/db/data/") #error also w/o /db/data/ def init(): tx = session.create_tr

我正试图通过Py2Neo批量导入数百万个节点。 我不知道什么更快,是
BatchWrite
还是
cipher.Transaction
,但后者似乎是最好的选择,因为我需要拆分批。 然而,当我试图执行一个简单的事务时,我收到一个奇怪的错误

python代码:

session = cypher.Session("http://127.0.0.1:7474/db/data/") #error also w/o /db/data/

def init():
    tx = session.create_transaction()

    for ngram, one_grams in data.items():
         tx.append("CREATE "+str(n)+":WORD {'word': "+ngram+", 'rank': "+str(ngram_rank)+", 'prob': "+str(ngram_prob)+", 'gram': '0gram'}")
         tx.execute()  # line 69 in the error below
错误:

Traceback (most recent call last):
  File "Ngram_neo4j.py", line 176, in <module>
    init(rNgram_file="dataset_id.json")
  File "Ngram_neo4j.py", line 43, in init
    data = probability_items(data)
  File "Ngram_neo4j.py", line 69, in probability_items
    tx.execute()
  File "D:\datasets\GOOGLE~1\virtenv\lib\site-packages\py2neo\cypher.py", line 224, in execute
    return self._post(self._execute or self._begin)
  File "D:\datasets\GOOGLE~1\virtenv\lib\site-packages\py2neo\cypher.py", line 209, in _post
    raise TransactionError(error["code"], error["status"], error["message"])
KeyError: 'status'
但从未接到过电话。(可能是我的错误?)

使用graph_db.create({“node:”node})进行常规插入可以正常工作,但速度非常慢(对于2.5M的节点,需要36小时) 请注意,数据集由一系列JSON文件组成,每个文件的结构深度为5级。 我想批量处理最后2个级别(每批大约100到20000个节点)

---编辑---


我使用的是Py2Neo 1.6.1,Neo4j 2.0.0。目前在Windows 7上(也包括OSX Mav.,CentOS 6)

您使用的是什么neo4j和py2neo版本

您应该为create语句使用参数

您可以检查
data/logs
data/graph.db/messages.log
中的服务器日志中是否有错误吗

如果有这么多数据要插入,那么直接批量插入可能更有意义

见:

我为此编写了两个工具:


您看到的问题是由于Neo4j服务器报告密码事务错误的方式在最后一分钟发生了变化。Py2neo 1.6是针对M05/M06构建的,当RC1/GA中的一些特性发生变化时,Py2neo在一些地方出现了故障


Py2neo 1.6.2()的问题已经解决,但我还不知道何时才能完成并发布此版本。

default\u graph.db/messages.log没有任何内容。在windows上哪里可以找到数据/日志?我不想把所有的python文件都重写为GEOFF/GraphML,这是8.5Gb的数据。。。但是,如果它真的更快,我会尝试一下。你可以直接吐出CSV,甚至只是参数的cypher语句和CSV。原始CSV批导入器最多可以处理1M个节点/秒。如何在CSV中建立关系?当然,我应该使用GEOFF吗?作为一名蟒蛇学家,你也可以检查一下:我手动修补了它,现在我看到了正确的错误提示!
 except cypher.TransactionError as e:
        print("--------------------------------------------------------------------------------------------")
        print(e.status)
        print(e.message)