0

我在运行 python 程序(真的是 plpython3u)作为 postgres(9.2)的触发器时遇到问题。触发器使用以下语句调用 python 程序: perform scalesmyone(new.id);

python 程序成功地将某些内容写入文件(这向我表明触发器正在工作),然后尝试在我的 Windows 7 机器上的 C: 驱动器上运行程序。它失败并出现以下错误:错误:WindowsError:[错误5]访问被拒绝。我现在正在使用子进程调用,但以前我尝试过子进程调用,但没有奏效。你可以在这里看到

这是代码:

CREATE or replace FUNCTION scalesmyone (thename text)
RETURNS int
AS $$
a=5
f = open('C:\\JUNK\\frompython.txt','w')
f.write(thename)
f.close()
import subprocess
return_code = subprocess.call(["C:\\Users\\Jim\\Desktop\\BATfiles\\run_addcust.bat", '"hello"'])
$$ LANGUAGE plpython3u;

文件在那里。

吉姆

4

1 回答 1

1

该错误表明运行 Postgres/plpython 的用户对该 .bat 文件没有执行权限(至少这是我在普通 Python 程序中得到的)。这可能不是子进程本身的问题。

于 2013-01-16T18:51:26.767 回答