问题标签 [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 回答
459 浏览

python - 迭代 IterableCypherResults 时未在 py2neo 中转换为 utf-8

我正在尝试使用 py2neo 从我的 neo4j 数据库中检索一些值

这在大多数情况下都可以正常工作,但是当我有一个像“Hand-Schüller-Christian histiocyte (cell)”这样的 n.name 时会失败

错误在“for record in query_results:”行抛出,并且在py2neo源中抛出以下错误

我不确定它是 py2neo 错误还是做错了什么。任何建议都会很棒。

谢谢

0 投票
2 回答
700 浏览

python - Python 和 Neo4j - 创建 RESTful API

我花了相当多的时间研究用于 neo4j 的不同 Python 框架(即 neo4django、bulbflow、py2neo),并且对它们如何能够抽象出功能使其感觉就像使用熟悉的关系数据库印象深刻。我的问题是围绕设置一个堆栈,该堆栈允许对模型创建、oauth 和基本查询等进行一些抽象,但要结合基于图形的算法进行数据分析、更详细的遍历和路径查找等。

是否有推荐或尝试过的方法来使用 Django 的可用库和功能创建健壮的 RESTful API,并且在必要时可以自由地下拉到较低级别的 neo4j API?对密码查询进行一些控制会很棒,但是如果像 neo4django 这样的东西已经很好地实现了基础知识,我不想重新发明轮子。决定如何从头开始设置这一切有点令人生畏,而且似乎有很多可能性,因此非常感谢任何建议。

例如,由于 py2neo 是在 neo4j REST API 之上构建的,然后我使用它作为单独的 REST API 与 Django 和 Tastypie 一起工作,由移动或 Web 应用程序访问,这些抽象层是否变得多余或甚至开始失去用处?同样,来自使用过图形数据库和 python 的人的任何输入肯定是有帮助的。

谢谢!

编辑: 我也很想利用一些neo4j库,比如空间,所以一些现有解决方案中的额外抽象可能会适得其反——同样,我不确定!

0 投票
1 回答
125 浏览

rest - neo4j 空间 findGeometriesWithinDistance REST

使用 neo4j 1.9 和 neo4j spatial for 1.9。试图让findGeometriesWithinDistanceREST 调用正常工作。

我可以确认安装已经成功并且该功能存在但是,使用 http 控制台我得到一个"Node 0 does not exist"错误。我提出的 REST 请求与文档中的完全一样,但我没有返回节点,而是收到此错误。

发生了什么需要节点 0 存在并因此导致错误?

有关信息,RESTfindGeometriesInBBox工作正常。

关于进一步调查...

使用 py2neo 与数据库交互。特别是,我们利用了GregorianCalendar功能(见这里)。当从我们的逻辑中删除时,该过程findGeometriesWithinDistance可以正常工作。

进一步研究,py2neo 代码中有注释说(请参见此处#retain a handle to the root node的第一个代码示例)。

这个“句柄”是否对索引 0 的节点做了一些事情,所以我们不能使用它?

0 投票
1 回答
435 浏览

python - py2neo 查询中的“随机”SocketError/Connection Refused 错误

你好,希望这不会变得太琐碎。

我的堆栈的相关部分是 Gunicorn/Celery、neomodel (0.3.6) 和 py2neo (1.5)。Neo4j 版本是 1.9.4,绑定在 0.0.0.0:7474 上(所有这些都在 linux 上,我认为是 Ubuntu 13.04)

所以我的 gunicorn/celery 服务器大部分时间都很好,除了偶尔,我收到以下错误:

因此,如您所见,我调用了User.index.get(请求响应中的第一个调用),并得到一个套接字错误。有时。大多数时候,它连接良好。该错误发生在所有使用 neo4j 连接的 Flask 视图/Celery 任务中(而不仅仅是做User.index.get;))。

到目前为止,我所采取的步骤包括修补 neomodel 连接函数以检查GraphDatabaseService每个线程创建的对象,并每隔 30 秒左右自动重新连接(和验证)到 neo4j 服务器。这可能降低了错误的频率,但它们仍然会发生。

在线查找错误,似乎大多数人试图连接到错误的接口/ip/端口。但是,鉴于我的大部分请求都通过了,我觉得这里的情况并非如此。

有任何想法吗?我不认为这是相关的,但我的数据库似乎有 38k 孤立节点;这本身可能值得另一个问题。

编辑:我应该补充一点,当运行 gunicorn/celery 时,这似乎消失了workers=1,而不是workers=$CPU_N. 看不出它为什么重要,因为显然 neo4j 设置为$N_CPU*10默认处理连接。

0 投票
1 回答
309 浏览

python - 使用 py2neo 时在节点之间创建批处理关系时出现异常

我使用 py2neo 创建了一个图形数据库,目的是:

  • 为每个城市创建一个节点。该节点存储城市名称和与之关联的唯一 ID。
  • 为每个机场创建一个节点。机场节点存储机场名称和唯一的 ID。
  • 如果机场在该城市,则在城市节点和机场节点之间创建关系。

我首先(成功地)使用这个模块创建了城市节点:

然后在另一个单独的模块中,我尝试创建机场节点以及机场节点与相应城市节点之间的关系,如下所示:

我正在创建关系的最后第三条语句抛出异常:

我试图打印这两种类型的节点的uri。他们是不同的:

输出:

所以两个节点的uris是不同的,这就是为什么我猜这个关系没有被创建。

我可以使用什么函数返回城市的未索引节点,即 uri 应该只是“节点”而不是“索引/节点/城市索引/城市 ID/”。

有没有其他方法可以建立这种关系?

如果需要,我很乐意提供任何其他信息。提前致谢!

Neo4j:1.9.5

py2neo:1.6.1

0 投票
3 回答
658 浏览

performance - Neo4J 查询性能不佳

我正在使用 NEO4J 数据库进行“压力测试”。这没什么大不了的,但部分结果让我怀疑这项技术是否适合在线应用程序(或者我根本没有得到 Cypher)。

第一个测试是逐个节点添加

然后使用此查询检索整个路径

请注意,当 时m.node_id == 2,查询需要约 100 毫秒。现在有大约 9000 个节点,最多可能需要 30 秒。我不是专家,但是时间太长了!我不认为 9K 节点应该有这么大的不同。

那么,我错过了什么?

干杯(和圣诞快乐)

编辑:

我正在使用 py2neo 并以这种方式计时查询:

0 投票
0 回答
181 浏览

neo4j - py2neo 写入批处理时出错 py2neo.neo4j.BatchOperationFailedException

我正在运行下面的代码,以更新 neo4j 数据库中的项目。如果该项目存在(搜索不是批量搜索),我删除它的所有关系并更新它的属性。否则,我使用新属性创建节点。最后,我创建了所有需要的节点关系。

每5个项目,我做:

该代码通常可以工作(更新或创建),但是,在特定数据上它会失败submit()。尽管如此,我还是没有找到识别错误的方法。追溯 :

我正在使用 py2neo 1.6.1 和 neo4j 1.9.2

编辑

在neo4j日志中发现如下错误:

0 投票
2 回答
1542 浏览

python - py2neo Cypher 交易失败

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

蟒蛇代码:

错误:

我尝试捕捉异常:

但永远不会被调用。(也许是我的错误?)

使用 graph_db.create({"node:" node}) 进行常规插入确实有效,但速度非常慢(250 万个节点需要 36 小时)请注意,数据集由一系列 JSON 文件组成,每个文件的结构深度为 5 级。我想批量处理最后两个级别(每批大约 100 到 20.000 个节点)

- - 编辑 - -

我正在使用 Py2Neo 1.6.1、Neo4j 2.0.0。目前在 Windows 7 上(还有 OSX Mav.、CentOS 6)

0 投票
2 回答
347 浏览

python - py2neo rel() 列表索引必须是整数而不是浮点数

我正在尝试将节点批量导入 Neo4j。但是当我尝试执行它时,它会抛出一个错误:List indices must be integers, not float. 我真的不明白哪些列表项,我确实有浮动,但这些被转换为字符串......

部分代码:

完整回溯

运行 neo4j 2.0、py2neo 1.6.1、Windows 7/64bit、python 3.3/64bit

- 编辑 -

做了一些测试,但错误位于对节点的引用。过度简化的示例代码:

创建节点时batch.create(node({props}))pprint返回一个P2Neo.neo4j. batchrequest object. 在该行add_labels(),它给出了与尝试创建关系时相同的错误:List indices must be integers, not float。在该batch.create_path()行它会抛出一个错误,说它不能从P2Neo.neo4j. batchrequest object.

我现在正在尝试脏调试以了解索引。

--脏调试编辑--

我一直在玩弄这个pendulate(collection) 功能。虽然我不太明白它是如何适应的,以及它是如何使用的,但会发生以下情况:每当它遇到一个奇数时,它就会被转换为一个浮点数(这很奇怪,因为count - ((i + 1) / 2),哪里i是一个奇数。)这个float 然后抛出list indices错误。一些印刷品:

这会导致list indices错误。这也发生在i=0. 由于这是一种常见情况,我做了一个额外if()的代码来规避代码(可能的加速?)虽然我没有对此进行单元测试,但似乎我们可以安全地将 index 转换为 int ...

使用的 pendulate 函数:

0 投票
1 回答
604 浏览

neo4j - 可以在 py2neo 中的标签上创建索引吗?

我想知道是否可以在 py2neo 的标签上创建索引?像 Cypher 一样:“在 :Person(name) 上创建索引”?

我认为这是在 Neo4j 2.0 中添加的东西,所以它可能还没有在 py2neo 中实现?

谢谢