问题标签 [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.
python - py2neo:取决于批量插入
我使用 py2neo (v 1.9.2) 将数据写入 neo4j 数据库。
有没有办法用批处理命令替换 current_relationship_index.get(..) 和 current_relationship_index.create(...) ?我知道有一个,但问题是,我需要根据这些命令的返回来采取行动。由于性能原因,我希望将所有语句放在一个批次中。
我读过索引关系是相当罕见的,但我这样做的原因如下:我需要每天解析一些(文本)文件,然后需要检查是否有任何关系在前一天发生了变化,即如果文本文件中不再存在关系我想用 neo4j 中的“替换”属性标记它。因此,我将所有“接触”关系添加到适当的索引中,因此我知道这些并没有改变。所有不在touched_relationship_index中的关系显然不再存在,所以我可以标记它们。
我想不出一种更简单的方法来做到这一点,即使我确信 py2neo 提供了一个。
编辑:考虑到奈杰尔的评论,我尝试了这个:
这显然不起作用,因为我不能在批处理中引用“my_rel”。我该如何解决这个问题?用“0”表示上一个批处理语句的结果?但是考虑到整个事情应该在一个循环中运行,所以数字不是固定的。也许使用一些变量“batch_counter”,它指的是当前的批处理语句并且总是递增,每当一个语句被添加到批处理中时?
python - py2neo: create relation with properties using batch
I would like to create relationships with properties using batch insertion, so I tried the following example from the py2neo documenation:
Why isn't it possible to specify a dictionary to assign the properties to the relationship?
How can I batch-create a relationship with properties where the properties are stored in SOME_PROPERTIES_VARIABLE
, e.g. something like that:
How would SOME_PROPERTIES_VARIABLE
have to look like?
For the batch function get_or_create_indexed_relationship
I could simply use a dictionary for the properties, e.g.:
This is exactly what I am looking for, except that I don't want to index the relationship.
I'm using Neo4j 1.9.2 and py2neo 1.5.1 - Thank you!
Additional question: Is a batch after a batch.submit()
empty or do I additionally have to execute batch.clear()
?
python - 使用 py2neo 从 csv 文件创建 neo4j 图形数据库
我目前正在攻读博士学位,我对 Py2neo 很感兴趣,所以我使用它是为了使用社交图谱进行一些实验。但是我遇到了新手的麻烦。请原谅我问这些简单的问题。
我有一个 xml 数据集,其中包含有关期刊出版物的数据,我已将其转换为 csv 表,大约有 700 条记录,每条记录由四个字段组成:日期、标题、关键字、作者。所以我的第一个问题是如何以编程方式从这个表中创建一个图表。我考虑编写一个循环 csv 表的 python 脚本,读取每个行和列字段并写入节点。+++++++++++++++++++++++++++++++++++++++++++++++++代码++++ +++++++++++++++++++++++++++++++++++++++++++
================ 我得到了这个输出(片段):Python 2.7.5(默认,2013 年 8 月 22 日,09:31:58)[GCC 4.8.1 20130603(红帽) 4.8.1-1)] 在 aires2 上,标准
========= 怎么了?
py2neo - py2neo: index.get_or_create() or graph_db.get_or_create_indexed_node()
When you add an indexed node in py2neo 1.6.0, you have two options:
Option 1:
Option 2:
I.e. you can add the node via the Index or via the GraphDatabaseService.
Does it make a difference which one I use? Or are these just wrappers for the same function?
graph - 在 Neo4j 图形数据库中找到组
我正在为我的项目使用 Neo4j。
在我的图形数据库中,我有两种类型的节点:
- 人
- 水果
人节点可以通过关系相互连接,如果他们喜欢水果,人节点就会与水果的节点连接。
我想找到一组 3 人喜欢例如苹果桃和橙子,并且至少有从一个人到第三个与“朋友”关系的路径,或者所有 3 个都是朋友。
由于我最近才开始使用 neo4j,因此需要 Guru 的帮助来提出解决方案。
我的想法是:
找出喜欢苹果的人群 找出喜欢桃子的人群 找出喜欢橙子的人群
从这 3 个集合中找出现有的 node-rel-node-rel... 路径,从其中一个集合开始,经过第 2 个集合,以第 3 个结束。
您能否确认我的方法是否正确和最优,是否可以通过 Cypher 或 py2neo 实施?
找不到分享方式,但可以在此处粘贴查询。如果将其粘贴回 console.neo4j.org,您将得到一个图表:
CREATE (Neo { name:'Neo' }),(Morpheus { name: 'Morpheus' }),(Trinity { name: 'Trinity' }),(Cypher { name: 'Cypher' }),(Apple { fruit: 'Apple' }),(Peach { fruit: 'Peach' }),(Banana { fruit:'Banana' }), root-[:ROOT]->Neo, Neo-[:KNOWS]->Morpheus, Neo-[:KNOWS]->Trinity, Morpheus-[:KNOWS]->Cypher, Neo-[:LIKES]->Peach, Trinity-[:LIKES]-Banana, Morpheus-[:LIKES]-Apple
假设您在提到的网站上看到了该模型。所以在这里我需要搜索喜欢(Peach,Banana,Apple)的人作为结果我想要得到 Neo,Trinity 和 Morpheus,因为 Neo 喜欢 peach,Trinity 喜欢香蕉,Morpheus 喜欢苹果,并且它们以某种方式连接(Neo 两者都知道墨菲斯和三位一体,即使三位一体都不认识墨菲斯)。
我的数据库中将有 10 万人,每个人都与某些人以及他们喜欢的水果联系在一起。我想继续进行描述的搜索并获得所有可能的匹配项,例如 Neo、Morpheus 和 Trinity。希望这个描述更清楚。
python - py2neo:各种命令的性能和返回值
使用 py2neo (1.5.1) 和 neo4j (1.9.2),我想知道不同命令的性能(图中大约有 80k 关系):
所以首先我得到所有的关系(~80k),这显然需要一些时间。
但是,为什么要花费大量时间(约 1-2 分钟)来遍历关系并打印它们(或存储在某个变量中)?rels
是关系列表,但每个关系包含什么?
删除该行时print relation.get_properties()
,循环的执行时间会变得更好(约 10 秒)。所以我假设每个人都relation.get_properties()
对数据库执行一个查询?听起来很合理。
然而,对我来说奇怪的是:为什么下面的代码要快得多,即使print relation
包含我需要的所有信息?
所以它实际上打印了我需要的所有信息,并且它的执行速度要快得多,即使这就是为什么我无法提取关系的属性并将其存储在变量中的原因。
那么关系中存储了哪些信息呢?如何在不使用get_properties()
. 这和缓存有关系吗?我不明白,这让我发疯......我已经在期待你的回答了,奈杰尔 ;-)
注意:我知道我可以通过使用批处理来优化它,但这不是现在真正的问题。
编辑:是否print relation["since"]
还会导致每次迭代的查询?
编辑2:当我们谈论性能时,还有一件事:比较以下密码查询,我注意到第一个比第二个慢,为什么?(在冷图上执行,因此没有缓存影响)
查询1:开始n =节点(*)返回n
query2: START n=node(*) RETURN n.name, n.age
python - 如何使用 Python 将批量数据插入 Neo4j
Neo4j
我想在using中插入一些数据py2neo
。链接到数据文件。我是新手Neo4j
。有人可以告诉我如何将批量数据插入到Neo4j
.Actually我想做......的性能Neo4j
测试
我已经尝试过了,但这仅适用于小数据集...
错误 :
python - 使用 py2neo 将文本数据插入 Neo4j
我想将文本文件中的数据插入到使用 py2neo 中。但是他们是在创建节点之前检查它是否已经存在的一种方法。
例如Neo4j
,他们的任何 py2neo 方式CREATE UNIQUE
创建节点 A 到 B 创建节点 A 到 C
然后只需创建单个节点 A 并连接到 B 和 C
插入数据.py
数据.txt:
python - 使用 Cypher 加速 py2neo
我正在将 SQLite3 数据库中的图表填充到 neo4j 中,在 Ubuntu linux 上使用 py2neo 和 Python 3.2。尽管速度不是最重要的问题,但在总共 500 万行中,该图仅在大约 3 小时内获得了 40K 行(每个 sql 行一个关系)。
这是主循环:
尽管数据库填充得很好,但它还需要数周才能完成。我怀疑有可能更快地做到这一点。