我绝对喜欢在我的Web项目中使用Node.JS,但是我也喜欢同时使用Python,所以我一直在想,是否可以从Node运行Python脚本,例如我的Node.JS后端调用一个从SQL数据库中检索一些数据并将其返回给Node的python脚本(我知道我可以在Node中完成所有操作,而只是使用一个示例)。
我曾经考虑过要这样做
1.Node创建一个Json文件,其中包含Python脚本将使用的变量(例如,名称:Jon birthDate:1996)
2.它运行一个python脚本,该脚本从该Json文件中读取这些变量(因此它将搜索1996年出生的Jon)
3.完成后删除Json文件
4.冲洗并重复
这是做这种事情的好方法吗?或者还有其他方法可以运行和“修改” Python脚本吗?
答案 0 :(得分:0)
我必须构建一个节点应用程序,但是对于后端计算,使用NumPy和Pandas似乎更好,所以我做了您正在做的...最终,我找到了一个名为python-shell的npm软件包。
它通过promise工作,因此我将调用我的计算脚本,并且如果有任何错误,还将使用另一个Python脚本进行一些清理。
工作得很好。代码是这样的:
const PythonShell = require('python-shell');
router.get('/calc', (req, res) => {
PythonShell.run('py/calculate.py', {pyPath: pyPath , args: [tmpPath],}, function(err, results) {
if (err) {
PythonShell.run('py/clean_up.py', {pyPath: pyPath, args: [tmpPath2]}, function(err, results2) {
if (err) throw err;
res.json(
{
message: "error: Running clean up",
ang: 0,
vec: 0,
}
);
});
} else {
let data = JSON.parse(results);
let message = data[0];
let ang = data[1];
let vec = data[2];
res.json(
{
message: message,
ang: ang,
vec: vec,
}
);
}
});
});