0

我在 python 中创建了一个包含各种函数的库,当称为映射节点之间的关系时。当我从库中调用这些函数时,我一直面临问题,它们往往会偶尔工作。当我在主文件中运行相同的代码时,它会完美执行。我的问题是,是否不建议从 SELF MADE 库运行对 neo4j 的查询。

我有一个函数可以在节点 A 和节点 B 之间创建关系。它在一个运行 5 次的循环中。但令人惊讶的是,它只在各个节点之间创建了一两个关系。当我在主文件中运行时,相同的代码运行完美。

有人可以指导我完成这个,因为当我在网上搜索时我无法得到任何答案。

[编辑 1]

import pymongo
from neo4j.v1 import GraphDatabase, basic_auth

class basics:
    def OEE(shift_length, break_time, stop_time, ideal_cycle_time, total_count, rejected_count, machine_name):
        driver = GraphDatabase.driver("bolt://172.104.44.80:7687", auth=basic_auth("neo4j", "root")) #Connects to tthe neo4j server
        session = driver.session() #Creates a session

        #avb = availability(shift_length, break_time, stop_time)
        planned_production_time = float(shift_length) - float(break_time)
        run_time = float(planned_production_time) - float(stop_time)
        avb = float(run_time) / float(planned_production_time)

        #perf = performance(ideal_cycle_time, total_count, shift_length, break_time, stop_time)
        perf = (float(ideal_cycle_time) * float(total_count)) / float(run_time)

        #qual = quality(rejected_count, total_count)
        good_count = float(total_count) - float(rejected_count)
        qual = float(good_count) / float(total_count)

        oee = float(avb) * float(perf) * float(qual)

        session.run("MATCH (n:Machine), (a:OEE) WHERE n.machine = {machine} AND a.name = 'OEE' CREATE (n)-[r:abc]->(a) RETURN r",
                    {"machine": machine_name})
        return oee 

上面提到的代码就是函数。它位于一个名为 basics 的库中,我在主 python 代码中将其称为:

import basics
basics.OEE(*all the parameters*)

(出于某种原因,我在这里删除了 for 循环,但这段代码偶尔也会映射。)

4

1 回答 1

2

您的代码有一个问题和一个改进:

  • 打开的会话必须在某处关闭。一开始你打开了一个,但我没有看到它关闭。
  • 驱动程序实例必须在所有 Neo4j 操作之间共享。驱动程序具有与数据库的连接池,因此您可以重用它们。在您的代码中,您每次都创建与数据库的新连接。

干杯。

于 2017-07-12T10:55:46.340 回答