session.run() 在使用 python 从自制库中调用时不正确 运行
session.run() doesn't run properly when called from a self made library using python
我在 python 中创建了一个包含各种函数的库,调用时会映射节点之间的关系。当我从库中调用这些函数时,我一直遇到问题,它们偶尔会起作用。当我 运行 主文件中的相同代码时,它会完美执行。我的问题是,是否不建议 运行 从自制库中查询 neo4j。
我有一个函数可以在节点 A 和节点 B 之间建立关系。它在一个循环中 运行s 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 循环,但这段代码偶尔也会映射。)
您的代码有 1 个问题,有 1 个改进:
- 打开的会话必须在某处关闭。你一开始打开了一个,但我没看到它关闭。
- 驱动程序实例必须在所有 Neo4j 之间共享 actions.A 驱动程序有一个数据库连接池,因此您可以重用它们。在您的代码中,您每次都创建一个新的数据库连接。
干杯。
我在 python 中创建了一个包含各种函数的库,调用时会映射节点之间的关系。当我从库中调用这些函数时,我一直遇到问题,它们偶尔会起作用。当我 运行 主文件中的相同代码时,它会完美执行。我的问题是,是否不建议 运行 从自制库中查询 neo4j。
我有一个函数可以在节点 A 和节点 B 之间建立关系。它在一个循环中 运行s 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 循环,但这段代码偶尔也会映射。)
您的代码有 1 个问题,有 1 个改进:
- 打开的会话必须在某处关闭。你一开始打开了一个,但我没看到它关闭。
- 驱动程序实例必须在所有 Neo4j 之间共享 actions.A 驱动程序有一个数据库连接池,因此您可以重用它们。在您的代码中,您每次都创建一个新的数据库连接。
干杯。