问题标签 [py2neo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1307 浏览

neo4j - py2neo 在 WriteBatch 中使用 get 或 create

我刚刚开始使用 Neo4j 和 py2neo。我正在试验 py2neo 中可用的批处理功能,用于对 neo4j 数据库进行批量数据加载。

在基本层面上,我想使用 py2neo 中的 WriteBatch 创建两个节点(或者如果它们已经存在则获取它们)并使用默认权重创建它们之间的关系(或者如果关系已经存在则增加权重)。

该文档仅解释了如何创建两个新节点并在它们之间形成关系。我正在研究以下方面的内容:

但是,这失败并出现错误:

SystemError: {u'stacktrace': [u'org.neo4j.server.rest.batch.NonStreamingBatchOperations.invoke(NonStreamingBatchOperations.java:63)', u'org.neo4j.server.rest.batch.BatchOperations.performRequest(BatchOperations .java:178)', u'org.neo4j.server.rest.batch.BatchOperations.parseAndPerform(BatchOperations.java:149)', u'org.neo4j.server.rest.batch.NonStreamingBatchOperations.performBatchJobs(NonStreamingBatchOperations.java :48)', u'org.neo4j.server.rest.web.BatchOperationService.batchProcess(BatchOperationService.java:117)', u'org.neo4j.server.rest.web.BatchOperationService.performBatchOperations(BatchOperationService.java:71 )', u'java.lang.reflect.Method.invoke(Method.java:616)'], u'message': u'{\n "message" : "对于输入字符串:\"{0}\" ",\n "异常" : "BadInputException",\n "stacktrace" : [ "org.neo4j.server.rest.web.RestfulGraphDatabase.extractNodeId(RestfulGraphDatabase.java:162)", "org.neo4j.server.rest.web.RestfulGraphDatabase. extractNodeIdOrNull(RestfulGraphDatabase.java:151)"、"org.neo4j.server.rest.web.RestfulGraphDatabase.addToRelationshipIndex(RestfulGraphDatabase.java:813)"、"java.lang.reflect.Method.invoke(Method.java:616) ", "org.neo4j.server.web.Jetty6WebServer.invokeDirectly(Jetty6WebServer.java:273)", "org.neo4j.server.rest.batch.NonStreamingBatchOperations.invoke(NonStreamingBatchOperations.java:55)", "org.neo4j .server.rest.batch.BatchOperations.performRequest(BatchOperations.java:178)”,“org.neo4j.server.rest.batch.BatchOperations.parseAndPerform(BatchOperations.java:149)", "org.neo4j.server.rest.batch.NonStreamingBatchOperations.performBatchJobs(NonStreamingBatchOperations.java:48)", "org.neo4j.server.rest.web.BatchOperationService.batchProcess(BatchOperationService.java:117)", "org.neo4j.server.rest.web.BatchOperationService.performBatchOperations(BatchOperationService.java:71)", "java.lang.reflect.Method.invoke(Method.java:616)" ]\n}', u'exception ': u'BatchOperationFailedException'}lang.reflect.Method.invoke(Method.java:616)" ]\n}', u'exception': u'BatchOperationFailedException'}lang.reflect.Method.invoke(Method.java:616)" ]\n}', u'exception': u'BatchOperationFailedException'}

基于“错误输入异常”,我很确定这是 start_node 和 end_node 参数的问题。基本上,我想参考前面的get_or_create节点和关系。您如何在批次中引用这些?

更新:经过大量实验,我已经缩小了重现此错误的可能方法 - 如果 get_or_create 中的任何一个节点已经存在于图中,批处理操作将失败,并在与现有节点对应的索引上出现错误输入错误. 我还更新了代码以准确显示我运行的内容。第一次运行此代码成功(图中两个节点都不存在)。再次运行失败。

py2neo 版本:1.5

neo4j 版本:1.8.2

0 投票
0 回答
396 浏览

neo4j - py2neo 无法为索引节点创建关系?

我正在使用 py2neo 1.5.1 和 neo4j 1.9.1。根据我的测试,由于创建关系线,以下代码会引发很多错误。谁能解释为什么?

0 投票
1 回答
677 浏览

neo4j - py2neo 中的关系类型

如何在 py2neo 中获取与密码查询的关系类型?我有这段代码有效。

这样我可以打印出连接到我的输入节点 (1) 的节点。

但是,我想要打印这些节点具有的关系类型。

例如:

我尝试(但失败)如下:

我怎么能用 py2neo 做到这一点?

0 投票
2 回答
569 浏览

python - 如何解析从密码返回的列表集合?

使用 python/py2neo,我运行一个密码查询,其中包含

在 Web 控制台和 py2neo 中,我得到的结果如下所示:

(只是用""而不是u''在网络控制台中)

它看起来不像 JSON。有一个u'List()', 不带引号的字符串和科学记数法。

如何解析返回的列表集合?

0 投票
1 回答
547 浏览

python - py2neo - Neo4j - 系统错误 - 创建批处理节点/关系

尝试批量创建节点和关系 - 批量创建失败 - 帖子末尾的回溯

注意具有较小节点子集的代码功能 - 当进入大量关系时会失败,不清楚这发生在什么限制。

  • 想知道是否需要将 ulimit 增加到 40,000 个以上的打开文件
  • 阅读人们在进行批量创建时遇到 REST API 的 Xstream 问题的地方——不清楚问题集是在 py2neo 范围内,还是在 Neo4j 服务器调优/配置上,还是在 Python 范围内。任何指导将不胜感激。

数据集中的一个集群最终在 700 多个节点中有大约 625525 个关系。总关系将超过 100 万 - 使用带有 x86_64 的 Apple Macbook Pro Retina - Ubuntu 13.04、SSD、8GB 内存。

  • Neo4j:配置的 auto_indexing & auto_relationships 设置为 ON
  • 通过 Python Panadas DataFrame.groupby() 集群/分组的节点
  • 节点:包含 3 个属性
  • 关系属性:1 -> 已创建 IN & Out 关系
  • ulimit 设置为 40,000 个打开的文件

代码

https://github.com/alienone/OSINT/blob/master/MANDIANTAPT/spitball.py

  • 操作系统:Ubuntu 13.04
  • Python版本:2.7.5
  • py2neo 版本:1.5.1
  • Java版本:1.7.0_25-b15
  • Neo4j 版本:社区版 1.9.2

追溯

回溯(最后一次调用):文件“/home/alienone/Programming/Python/OSINT/MANDIANTAPT/spitball.py”,第 63 行,在 main() 文件“/home/alienone/Programming/Python/OSINT/MANDIANTAPT/ spitball.py”,第 59 行,在主 graph_db.create(*sorted_nodes) 文件中“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/neo4j.py ”,第 420 行,在创建返回 batch.submit() 文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/neo4j.py”,第 2123 行,在 self._submit() 文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/neo4j.py”中提交响应,第 2092 行,在提交身份证,请求枚举(self.requests)文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/rest.py”,第428行,在_send返回self._client().send(request) 文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/rest.py”,第 365 行,在发送中返回响应(request.graph_db,rs.status,request.uri,rs.getheader(“位置”,无),rs_body)文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2。 7/site-packages/py2neo/rest.py",第 279 行,在init中 引发 SystemError(body) SystemError:无

进程以退出代码 1 结束

0 投票
1 回答
290 浏览

python - 在 py2neo 中批量创建或获取路径

我正在尝试在 Neo4j 中创建一个日期/时间树,正如 Nigel Small 在这里描述的那样。我想预先填充一段时间内的所有日期,因此,我想一次运行多个 get_or_create_path()。但是,我似乎找不到此函数的批处理版本,或“运行密码查询”的批处理等效项 - 如果我必须单独运行它们,它将大量影响我的运行时。

有没有办法批量处理这个过程?希望我是愚蠢的,只是错过了一个明显的功能!我不介意它是运行密码查询的批处理版本,还是 get_or_create_path() 的批处理版本。

提前谢谢了,

路易斯

0 投票
1 回答
377 浏览

neo4j - py2neo 创建函数创建重复节点

我有一个 Neo4j 数据库,其中包含有关国会议员的信息。我遇到的问题是是否有空缺职位。发生这种情况时,我在“Congressmen”索引中使用相同的键:值。我尝试了下面的代码,因为在 py2neo 文档中它声明 add 函数是幂等的

当我在运行代码 3 次后检查界面时,我有重复的节点。在此处输入图像描述

是否可以防止节点重复并且仍然能够使用相同的键/值对它们进行索引?

0 投票
1 回答
1227 浏览

neo4j - Py2neo - 通过 id 获取节点在执行时抛出错误?

我在一个项目中使用了 python neo4j rest 客户端,刚刚切换到 Py2neo。

我试图通过其 ID 从数据库中获取一个节点,但出现以下错误:

我使用了get_node函数(http://nigelsmall.com/_api/py2neo/neo4j.html#py2neo.neo4j.GraphDatabaseService.get_node

我做错了什么还是应该更新文档?

谢谢

0 投票
1 回答
1302 浏览

neo4j - py2neo:批量创建具有多个键:值对的索引节点

您可以轻松地批量创建索引节点。

但是如何批量创建一个节点并同时添加多个键:值对呢?或者将节点添加到多个索引?

我想到的一个想法是首先创建节点,然后将它们添加到第二批的索引中:

但这似乎很复杂。Py2neo 太神奇了,一定有更简单的方法。


根据奈杰尔的回答,我尝试了这个节点列表:

一些节点最终出现在我的索引中,但不是全部。当我在索引中搜索 ('key:value-from-n") 时,它返回一个节点,但不是正确的节点。当我尝试将它们添加到索引时,如何访问节点的“内部”ID?


我尝试了 py2neo 的(当前正在测试)版本 1.6.0,它可以工作!

现在返回一个请求对象,该对象可以在批处理中用于引用节点。

1.6.0的文档中有一个示例

0 投票
1 回答
491 浏览

python - Py2neo - 在 writebatch 中创建关系

我使用 py2neo 将数据转储到 Neo4j 数据库中。

有了这个

我可以使用同一批次中的新节点创建关系。

但是,如果我尝试与在批处理之前已经创建的节点创建关系,如下所示:

它失败*。将如何继续在批次中创建与先前创建的节点有关系的节点?

使用 py2neo 1.5.1 和 Neo4j 1.9.2

谢谢

  • 错误信息 :

SystemError: {u'stacktrace': [u'org.neo4j.server.rest.batch.NonStreamingBatchOperations.invoke(NonStreamingBatchOperations.java:63)', u'org.neo4j.server.rest.batch.BatchOperations.performRequest(BatchOperations .java:188)', u'org.neo4j.server.rest.batch.BatchOperations.parseAndPerform(BatchOperations.java:159)', u'org.neo4j.server.rest.batch.NonStreamingBatchOperations.performBatchJobs(NonStreamingBatchOperations.java :48)', u'org.neo4j.server.rest.web.BatchOperationService.batchProcess(BatchOperationService.java:117)', u'org.neo4j.server.rest.web.BatchOperationService.performBatchOperations(BatchOperationService.java:72 )', u'java.lang.reflect.Method.invoke(Method.java:606)', u'org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)'], u'信息':u'{\n "message" : "对于输入字符串: \"5078\')]}\"",\n "exception" : "BadInputException",\n "fullname" : "org.neo4j.server.rest .repr.BadInputException",\n "stacktrace" : [ "org.neo4j.server.rest.web.RestfulGraphDatabase.extractNodeId(RestfulGraphDatabase.java:171)", "org.neo4j.server.rest.web.RestfulGraphDatabase.createRelationship (RestfulGraphDatabase.java:410)"、"java.lang.reflect.Method.invoke(Method.java:606)"、"org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)" , "org.neo4j.server.web.Jetty6WebServer.invokeDirectly(Jetty6WebServer.java:302)", "org.neo4j.server.rest.batch.NonStreamingBatchOperations.invoke(NonStreamingBatchOperations.java:55)", "org.neo4j.server.rest.batch.BatchOperations.performRequest(BatchOperations.java:188)”、“org.neo4j.server.rest.batch.BatchOperations.parseAndPerform(BatchOperations.java:159)”、“org.neo4j.server.rest. batch.NonStreamingBatchOperations.performBatchJobs(NonStreamingBatchOperations.java:48)”、“org.neo4j.server.rest.web.BatchOperationService.batchProcess(BatchOperationService.java:117)”、“org.neo4j.server.rest.web.BatchOperationService。 performBatchOperations(BatchOperationService.java:72)”、“java.lang.reflect.Method.invoke(Method.java:606)”、“org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112) " ],\n "cause" : {\n "message" : "对于输入字符串:\"5078\')]}\"",\n "exception" : "NumberFormatException",\n "stacktrace" : [ "java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)", "java.lang.Long.parseLong(Long.java:441)", "java.lang.Long.parseLong( Long.java:483)”、“org.neo4j.server.rest.web.RestfulGraphDatabase.extractNodeId(RestfulGraphDatabase.java:167)”、“org.neo4j.server.rest.web.RestfulGraphDatabase.createRelationship(RestfulGraphDatabase.java: 410)”、“java.lang.reflect.Method.invoke(Method.java:606)”、“org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)”、“org.neo4j .server.web.Jetty6WebServer.invokeDirectly(Jetty6WebServer.java:302)”,“org.neo4j.server.rest.batch.NonStreamingBatchOperations.invoke(NonStreamingBatchOperations.java:55)”,“org.neo4j.server.rest.batch .批处理操作。performRequest(BatchOperations.java:188)”、“org.neo4j.server.rest.batch.BatchOperations.parseAndPerform(BatchOperations.java:159)”、“org.neo4j.server.rest.batch.NonStreamingBatchOperations.performBatchJobs(NonStreamingBatchOperations. java:48)”、“org.neo4j.server.rest.web.BatchOperationService.batchProcess(BatchOperationService.java:117)”、“org.neo4j.server.rest.web.BatchOperationService.performBatchOperations(BatchOperationService.java:72) ", "java.lang.reflect.Method.invoke(Method.java:606)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)" ],\n "全名" : "java.lang.NumberFormatException"\n }\n}', u'fullname': u'org.neo4j.server.rest.domain.BatchOperationFailedException', u'exception': u'批处理操作失败异常'}