问题标签 [neo4j-python-driver]

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 投票
2 回答
280 浏览

neo4j - 包含混合类型的集合不能存储在属性中

我是 Neo4j 的新手,我正在尝试创建一个像这样的节点:

Neo4j 告诉我:

neo4j.exceptions.CypherTypeError:包含混合类型的集合不能存储在属性中。

这意味着它只允许我有一个列表:

但是,我的数据库中的每个表节点都会有不同的列名,所以我真的不能有一个属性列表......

有什么建议吗?

0 投票
3 回答
1811 浏览

python - 带有 TLS 和自签名证书的 Neo4j Bolt:证书验证失败

我正在尝试为 CentOS7 上的 Bolt 通信设置启用了 TLS 的 Neo4j。服务器当前安装为系统服务。我已经生成了一个自签名证书和密钥:

然后,我将 server.crt 文件复制到 /var/ssl/trusted/neo4j(根据 Neo4j 文档)并将以下行添加到我的 neo4j.conf 中:

最后,我将 ca.crt 文件添加到我的系统可信证书链中:

并重新启动服务器,该服务器正常运行。但是,在尝试使用 Python 客户端连接到服务器时,我看到以下错误:

产生错误的Python代码:

CA 证书应该添加到我的系统信任链中,其他应用程序似乎可以使用它,但是 Neo4j 客户端似乎无法使用它来验证从服务器返回的证书。Neo4j 是否仅将此 CA 用于 HTTPS 端点,而不是 TLS 端点?如果是这样,我怎样才能将 Bolt 端点的 CA 证书放入我系统的信任链中?

0 投票
1 回答
2713 浏览

python - 从 cypher bolt 语句中获取结果

我正在尝试使用neo4j python 驱动程序访问 neo4j 。我正在运行以下代码来获取事物 A的属性。我直接从 neo4j 的 GraphDatabase 打开驱动程序和会话,并使用session.run()执行图形查询。这些查询返回一个BoltStatementResult对象。我的问题是如何将此对象转换为我需要的实际结果(事物 A 的属性)。?

0 投票
1 回答
47 浏览

neo4j - 如何处理由于堆大小错误而失去与服务器的连接?

我有一个包含 2200 万条 JSON 格式记录的大型数据集,我使用 apoc.periodic.iterate 和 apoc.mongodb 将其从 mongodb 数据库导入到 neo4j。导入 300 万条记录并占用 6g 内存后,与服务器的连接丢失,出现堆大小异常。我更改了配置文件并设置了堆和页面缓存,但没有生效,这是主要问题。顺便说一句,在浏览器中运行代码并使用 python 驱动程序具有相同的结果。尽管当我手动导入数据并以 250 万个限制导入它,然后在下一次查询执行中跳过它并导入下一个 250 万个批次时,它仍然有效。我实际上想用 python 驱动程序来做到这一点,但我无法模拟手动处理它的方式。

日志文件中有错误提示:协议握手期间发生致命错误...已建立的连接被主机中的软件中止...

0 投票
0 回答
46 浏览

python - `with` 与简单变量赋值(neo4j 驱动程序)上的 linter 错误

这按记录工作:

但我的 linter 对此抛出了一个错误:

在此处输入图像描述

我认为这with只是处理关闭句柄等的语法糖。

请注意,代码本身会运行,但 linter 错误确实会分散注意力。有没有办法修复原始代码

我正在尝试让会话对象用于多个事务(或我的应用程序的生命周期)

https://neo4j.com/docs/api/python-driver/current/driver.html#neo4j.Driver.session

来源在这里 https://github.com/neo4j/neo4j-python-driver

0 投票
1 回答
40 浏览

neo4j - 获取节点/边创建/删除统计信息

我正在运行一个Python (3.8)使用pipneo4j 4.0.0与社区版neo4j 4.1.1服务器交互的脚本。

MERGE如果节点和关系不存在,我正在运行许多用于更新或创建的查询。到目前为止,这运行良好,因为数据库正在按预期获取数据。

但是,从我的脚本方面,我想知道在每个查询中创建了多少个节点和边。问题是,在Cypher我从脚本发送到数据库的这些查询中,我不止一次调用MERGE并且还使用APOC过程(尽管这些APOC只是用于更新标签,它们不会创建实体)。

下面是一个查询示例:

这可以正常工作,并且节点是使用从 传递的属性创建的,该属性通过threads Dict变量传递crt_paramsUNWIND

但是,其中的Result实例内部run_res没有任何实例供我访问已创建节点和关系的统计信息。我怀疑这是因为:ResultSummarySummaryCounters

但是,我不确定这是否是原因。

希望有人可以帮助我设置我的查询,以便无论MERGE我执行多少操作,我都可以获得发送的整个查询的统计信息crt_stmt

非常感谢。

0 投票
1 回答
184 浏览

python - 如何使用py2neo在neo4j中将列表列表加载为字符串

我有示例 param_list-

并有密码模板-

当我运行 cypher 语句时,出现以下错误:

即使我将属性值作为字符串类型,我仍然会收到此错误消息,指出不支持列表列表。

py2neo == 4.3.0 neo4j == 4.0.0

0 投票
1 回答
228 浏览

python - 在 Neo4j 中将参数作为 dict 传递给 tx.run

我正在尝试编写一个通用函数来获取 Cypher 查询和参数字典,并能够动态运行任何给定的查询。我所拥有的看起来像这样:

使用如下所示的查询:

并将参数传递为

我收到此错误:

要么我错了,要么在这种情况下你不能将命名参数的字典传递给 tx.run()...谁能让我直截了当?谢谢!

0 投票
1 回答
81 浏览

neo4j - 使用 neo4j Bolt 驱动程序(Python 或 Java)时获取事务 ID?

我正在尝试构建一个 REST API,以向将使用我的程序构建简单和高级 API 调用以与 Neo4j 图形交互的用户隐藏 Cypher 的复杂性。我想让用户可以使用事务 id处理HTTP API中的事务(打开事务、在事务中执行语句、提交/回滚事务)。是否可以从使用官方 Bolt 驱动程序之一创建的交易中提取交易 ID?

0 投票
0 回答
111 浏览

neo4j - 无法从失效连接中读取(Jupyter notebook,python 驱动程序)

我尝试将数据导入 Azure 中的 Neo4j VM。

此代码有效:

但是这段代码不起作用:

我有错误:

事务失败,将在 1.0608892687544587s 内重试(无法从失效连接中读取地址(主机='IP',端口=7687)(地址(主机='IP',端口=7687)))

我不知道我必须更改或检查什么。我也试过 Neo4j Desktop,我也有同样的错误。

Neo4j 版本:4.1.3