py2neo 中的批处理

2024-01-09

我已经开始使用 Node4j,并且正在探索一些批处理,但不幸的是,我在创建节点之间的关系时遇到了一些问题。

我的问题如下。我有一个从文件中读取的网站和用户列表。我可能在该文件中有重复的网站和用户,所以我不想为这些重复的条目插入新节点。但由于文件很大,我想批量处理节点和关系。

基本上,我有这两个函数来创建节点和关系并将它们添加到批次中。

graph_db = neo4j.GraphDatabaseService("http://localhost:7474/db/data/")
batch = neo4j.WriteBatch(graph_db)

def create_node(pvalue, svalue, type):
    return batch.create({\
        "pkey"  : pvalue,
        "skey"  : svalue,
        "type"  : type
        }
    )


def create_rel(from_node, type_label, to_node, fields):
    properties =\
    {"ACCT_KEY":  fields.ACCT_KEY}

    relation = rel(from_node, type_label, to_node, **properties)
    batch.create(relation)

然后,在使用字典确保我之前没有创建过节点之后,我执行以下操作:

node1 = create_node("ATTRIBUTE_1", "ATTRIBUTE_2", "WEBSITE")
node2 = create_node("ATTRIBUTE_3", "ATTRIBUTE_4", "USER")

create_rel(node1, "VISITED_BY", node2, fields)

我将“node1”和“node2”的引用保存在字典中,因此当我想创建涉及已注册的网站或用户的关系时,我不会再次创建节点,而是直接使用引用。我在循环内执行此操作并且效果很好,直到我决定在一定次数的迭代后执行此操作:

batch.submit()
batch.clear()

当我决定使用以前批次的这些引用时,出现以下错误:

Traceback (most recent call last):
    File "main.py", line 102, in <module>
        create_rel(cardholder, fraud_label, merchant,fields)
    File "main.py", line 33, in create_rel
        batch.create(relation)
    File "/usr/local/lib/python2.7/dist-packages/py2neo/neo4j.py", line 2775, in create
        "to": self._uri_for(entity.end_node)
    File "/usr/local/lib/python2.7/dist-packages/py2neo/neo4j.py", line 2613, in _uri_for
        uri = "{{{0}}}".format(self.find(resource))
    File "/usr/local/lib/python2.7/dist-packages/py2neo/neo4j.py", line 2604, in find
        raise ValueError("Request not found")
ValueError: Request not found

我相信发生这种情况是因为它以某种方式丢失了之前批次的引用并且它们不再有效。我尝试从节点收集 ID 并使用它们,但我找不到如何操作。任何帮助将不胜感激,谢谢。

我的 Node4j 版本是“Unix 2.0.3 社区版”,py2neo 版本是 1.6.4。


如果文档中不清楚这一点,但引用不能跨单独批次或批次提交,我们深表歉意。引用先前创建的这些项目的正确方法是解析第一次提交的结果并将所需的实体传递到第二次提交。

我通常建议每次提交使用一个批次,并避免重复使用同一批次对象。 py2neo 的未来版本可能会阻止这种情况发生。

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

py2neo 中的批处理 的相关文章

  • 检查neo4j图中是否存在节点

    NOTE 我让这成为几个问题 而不是我问的简单问题 所以我将后续问题分解为他们自己的问题here https stackoverflow com questions 22867148 creating unique relationship
  • 如何集成Neo4j数据库、NestJS框架和GraphQL?

    我正在尝试将我的 REST API NestJS 与带有 GraphQL 查询的新 Neo4j 数据库集成 有人成功吗 提前致谢 编辑1 我添加了我的代码 import Resolver from nestjs graphql import
  • Neo4j 3.0 中的存储过程

    我在 Windows 上使用 neo4j 3 0 并尝试使用存储过程新功能 我已经构建了 apoc jargithub 来源 https github com neo4j contrib neo4j apoc procedures 该 ja
  • 按关系属性排序 neo4j

    使用 Neo4j 1 9 3 我想创建一个音乐节目列表 在给定的节目中可能会表演三段 每件作品都有一个与之关联的作曲家 并且可能出现在许多不同的程序中 因此我无法在作品节点上放置序列号 我假设我可以创建该程序 其与每个部分的关系如下所示 p
  • Neo4j cpu 卡在 GC 上

    突然间 工作了一个月后 CPU 几乎没有使用 1 到 5 之间 neo4j 服务器在垃圾收集时 cpu 占用率达到 100 我在 ubuntu 4 处理器服务器上运行 neo4j entherprise 2 0 3 未嵌入 这是我的 neo
  • Python networkx 和持久性(可能在 neo4j 中)[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个每秒在内存中创建数千个图形的应用程序 我希望找到一种方法来保存这些以供后续查询 它们并不是特别
  • Neo4j 的数据库级验证

    我使用 Neo4j 作为我的图形数据库 假设我想限制用户名字段的长度小于10 有没有办法在数据库级别施加这样的约束 现在 您必须在应用程序级别上执行此操作 或者通过注册一个事务提交挂钩来检查该属性字段是否符合特定标准 See http do
  • 使用 py2neo 将 python 连接到 neo4j 时出错

    我使用 py2neo 将以下 python 代码写入 neo4j from py2neo import Graph from py2neo import neo4j Node Relationship sgraph Graph alice
  • 如何以最佳方式将 SQL 查询转换为 cypher?

    我是 neo4j 的新手 使用 3 0 版本 我有一个巨大的事务数据集 我将其转换为图形模型 我需要将下面的 SQL 查询转换为 cypher create table calc base as select a ticket id tic
  • python 单元测试中的 Neo4j 临时数据库

    我正在尝试为将与 Neo4j 图形数据库交互的 python 项目创建单元测试 目前 我正在实现嵌入式图形数据库 但如果我选择将其部署到 Web 应用程序 我可能会迁移到 REST 接口 我已经安装了嵌入式 neo4j v1 9rc2pro
  • 如何在 Neo4j 遍历的每一步中指定使用哪种关系类型作为当前节点的函数?

    我想使用 neo4j 遍历 API 遍历我的图 但我需要能够指定在每一步使用哪种关系类型 并且要使用的关系类型需要是当前节点的函数 有没有办法做到这一点 在当前的 Traverser API 中 您无法选择要遍历的确切关系 相反 您可以采用
  • Neo4JClient:如何创建关系?

    我看到了一篇具有相同标题的帖子 但不幸的是无法通过查看给定的示例找到解决方案 我通过以下方式创建了节点 private static void createExampleNetwork GraphClient client try Cyph
  • 当数据库更新时,WTForms 中的选择验证不会更新

    我明白了SelectFieldWTForms 中的方法采用 can 参数choices其形式为 choices value1 display of value 1 value2 display of value 2 我需要根据对数据库的调用
  • 如何在java中使用cypher加载CSV文件?

    我是密码新手 我想在java中使用cypher加载csv 我用谷歌搜索并找到了以下作品 LOAD CSV WITH HEADERS FROM http neo4j com docs 2 3 1 csv import movies csv A
  • 如何在neo4j中显示屏幕上的所有节点

    我有近 5000 个节点Recipes和 5 个节点Meal Types在 Neo4j 数据库中 目前他们之间没有任何关系 我正在下面运行 CQL MATCH n RETURN n LIMIT 100000 这运行良好 但它返回与相关的节点
  • 如何使用 nosql 构建成就和徽章

    我目前有一个使用 mongodb 作为数据库的社交游戏应用程序 我的问题是 如果我想创建一个积分和徽章系统 有哪些建议 成就 徽章的业务逻辑可能会变得非常复杂并且非常临时 因此实时授予徽章似乎效率不高 我想象将跟踪的操作添加到队列中的某处
  • Neo4j 在 Cypher 查询运行中仅使用一个核心

    当我在 UI 中运行 Cypher 查询时 服务器中只有一个核心正在运行 查询会卡住或响应非常慢 我使用 Neo4j 3 0 7 社区 有人知道我可以使用所有核心进行哪些调整吗 单个 Cypher 查询仅限于单个线程 看到这个tweet h
  • 如何使用 spring-data-neo4j 配置 neo4j EmbeddedGraphDatabase (现已弃用)?

    我正在使用 spring data neo4j 3 1 1 Release 和 neo4j 2 1 2 我设法制作了一个运行良好的 spring 配置 但它使用了 org neo4j kernel EmbeddedGraphDatabase
  • 如何结识有相同兴趣的朋友的朋友?

    交朋友的朋友很容易 我得到了这个 看起来效果很好 g v 1 in FRIEND in FRIEND filter it g v 1 但我想做的只是结交有相同兴趣的朋友的朋友 下面我希望 Joe 被推荐为 Moe 而不是 Noe 因为他们没
  • 在 Ubuntu 中更改 Neo4j 中的数据存储位置

    我已经成功安装了neo4j 端口号为7474 并且工作正常 我的问题是数据存储在 var lib neo4j 该目录中的该位置很快就会满 我想更改数据存储位置 这怎么可能 我尝试编辑该文件 etc neo4j neo4j server pr

随机推荐