使用 py2neo 在 neo4j 上查询写入性能

2024-04-11

目前,我正在努力寻找一种高性能的方法,使用 py2neo 运行多个查询。我的问题是 python 中有一大堆需要写入 neo4j 的写入查询。

我现在尝试了多种方法来解决这个问题。对我来说最好的工作方法如下:

from py2neo import Graph
queries = ["create (n) return id(n)","create (n) return id(n)",...] ## list of queries
g = Graph()
t = graph.begin(autocommit=False)
for idx, q in enumerate(queries):
    t.run(q)
    if idx % 100 == 0:
        t.commit()
        t = graph.begin(autocommit=False)
t.commit()

编写查询仍然需要很长时间。我还尝试从 apoc 运行多次但没有成功,查询从未完成。我也尝试了自动提交的相同写入方法。有一个更好的方法吗?有没有什么技巧,比如先删除索引,然后在插入数据后添加索引?

-- 编辑:附加信息:

我正在使用 Neo4j 3.4、Py2neo v4 和 Python 3.7


您可能想阅读迈克尔·饥饿 (Michael Hunger) 的著作快速批量更新的提示和技巧 https://medium.com/neo4j/5-tips-tricks-for-fast-batched-updates-of-graph-structures-with-neo4j-and-cypher-73c7f693c8cc.

关键技巧是使用UNWIND https://neo4j.com/docs/developer-manual/current/cypher/clauses/unwind/将列表元素转换为行,然后逐行执行后续操作。

有一些支持功能可以轻松地为您创建列表,例如range() https://neo4j.com/docs/developer-manual/current/cypher/functions/list/#functions-range.

举个例子,如果你想创建 10k 个节点并添加一个 name 属性,然后返回节点名称及其图形 id,你可以这样做:

UNWIND range(1, 10000) as index
CREATE (n:Node {name:'Node ' + index})
RETURN n.name as name, id(n) as id

同样,如果您有大量数据要导入,则可以创建参数映射列表,调用查询,然后展开列表以立即对每个条目进行操作,类似于我们使用 LOAD CSV 处理 CSV 文件的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 py2neo 在 neo4j 上查询写入性能 的相关文章

随机推荐

  • 以最少的磁盘空间开销进行版本控制

    我一直在考虑使用像 SVN 这样的版本控制系统作为我使用的几台 PC 之间的通用备份和同步工具 这适用于各种数据 包括 MP3 和翻录 DVD 大量数据 120GB 我的主要问题是 SVN 创建每个版本化文件的副本 svn目录 虽然我可以看
  • 如何使用List.fold_left?

    我仍在尝试了解如何fold left完全有效 它是否像这样迭代列表List iter 或者我的代码还有其他问题吗 我认为 e 是列表中的元素 所以它是一个元组 并且fst e获取元组的第一个元素并且snd e获取元组中的第二个元素 let
  • 如何将 JToken 转换为 string[]?

    我正在尝试将 JObject 中的数组读取到 string 中 但我不知道如何操作 代码非常简单 如下所示 但不起作用 失败并出现错误无法将 JToken 转换为 string JObject Items jsonSerializer De
  • NiFi:ExtractText 中的正则表达式获取 CSV 标头而不是数据

    我正在开发一个获取 CSV 文件的流程 我想根据 CSV 记录中的第一个字段将记录放入不同的目录中 例如 CSV 文件看起来像这样 country firstname lastname ssn mob num US xxxx xxxxx x
  • 如何使用其内容识别图像文件格式?

    如果图像文件的格式为 png那么它将包含 PNG 位于文件的开头 当读入Text mode 如果图像文件的格式为 bmp那么它将包含BM 位于文件的开头 当读入Text mode 我知道图像格式在文件开头包含一定大小 字节 的文本 数据 这
  • 无法安装kivy。为 kivy 构建轮子失败 (pyproject.toml)

    我不知何故搞砸了我的 pip 或我的 kivy 文件 我的也安装不了我试过了pip install kivy并且git clone https github com kivymd KivyMD git depth 1 我使用的是 macos
  • 实时工作流程的自定义工作流程活动中缺少跟踪日志

    我已经针对 CRM 2013 编写了一个自定义工作流活动 您不需要了解它的作用 我遇到的问题是 尽管实例化了ITracingService 我使用生成的任何跟踪内容Trace 方法在运行时被混淆仅适用于实时工作流程 换句话说 如果我异步运行
  • 如何从线性渐变中获取当前颜色?

    我有一个搜索栏 其值范围为 1 到 10 THUMB 停止在 1 2 3 4 5 10 如果 SeekBar 是线性渐变 则背景颜色 颜色从红色开始 然后是黄色 最后是绿色 如何获取拇指所在位置的当前颜色 pskink的建议 https s
  • OAuth 2 承载授权标头

    随着客户端 API 的更新 HTTPBasicAuthication 方法已替换为 OAuth2Bearer授权标头 使用旧的 API 我会执行以下操作 NSURLCredential credential NSURLCredential
  • 让 R 停止正在运行的 EC2 机器

    我有一些工作流程 我希望 R 在完成脚本后停止正在运行的 Linux 机器 我可以想到两种类似的方法来做到这一点 以 root 身份运行 R 然后调用system halt 从 root shell 脚本运行 R 可以以任何用户身份运行 R
  • 指数时间复杂度的真实示例

    我正在寻找一个直观的 现实世界的问题示例 该问题需要 最坏情况 指数时间复杂度来解决我正在做的演讲 以下是我提出的其他时间复杂度的示例 其中许多取自这个问题 https stackoverflow com questions 1592649
  • 检查表单是否已提交 - PHP

    检查表单是否已提交以确定是否应该将表单的变量传递给我的验证类的最佳方法是什么 首先我想也许 isset POST 但这总是会返回 true 因为超全局变量在任何地方都被定义 我不想使用以下方式迭代表单的每个元素 if isset POST
  • 如何重现错误“由于暂停纯视频背景媒体以节省电量,播放()请求被中断”?

    介绍 作为我项目的一部分 我有一个接收视频流的播放器 我希望它在流开始和结束时自动播放和自动停止 因此我引入了一个检查来查看流是否处于活动状态并在每种情况下启动和 或停止播放器 这是一个企业网站 有时有多达 3000 名用户同时观看视频流
  • PyTorch 教程错误训练分类器

    我刚刚开始 PyTorch 教程使用 PyTorch 进行深度学习 60 分钟闪电战我应该补充一点 我之前没有编写过任何 python 但其他语言 如 Java 现在 我的代码看起来像 import torch import torchvi
  • java 的地理图表

    谁能推荐一个 Java 组件 它可以让您创建一个漂亮的世界地图图像 突出显示某些国家 基于一些统计数据 与此图像类似的东西 类似于 Google 地理图表 但适用于 Java https developers google com char
  • Visual Studio Android ApkSigner 在密钥库中找不到密钥

    我在 Visual Studio 中创建 APK 时收到此错误 Failed to load signer signer 1 C googleplay keystore entry googleplay does not contain a
  • 使用pipenv,如何在pipfile中指定最低的python版本?

    Pipenv 有没有办法在 Pipfile 中指定 python 的最低版本 像这样的东西会起作用吗 requires python version gt python 3 5 No pipenv does not支持这一点 每Pipenv
  • xcode 接口生成器对象链接到检查器中的自定义类?

    在Xcode 最新版本 Interfacebuilder中 您可以将对象链接到代码 我创建了一个类 interface FileChangeController NSObject 但它没有在 Interface Builder Inspec
  • ios8 - 如何显示默认共享表

    我想展示并使用默认的 分享到其他服务 表 以便允许分享到 Twitter Facebook 电子邮件等 我不知道如何从我的应用程序中显示此视图 我该怎么做 您可以使用简单的活动控制器来显示默认共享应用程序 NSArray activityI
  • 使用 py2neo 在 neo4j 上查询写入性能

    目前 我正在努力寻找一种高性能的方法 使用 py2neo 运行多个查询 我的问题是 python 中有一大堆需要写入 neo4j 的写入查询 我现在尝试了多种方法来解决这个问题 对我来说最好的工作方法如下 from py2neo impor