如何在PostgreSql中从存储过程执行Python脚本?

3
我希望能够在PostgreSql的存储过程中执行一个Python脚本。
我需要像这样的代码:
 CREATE TRIGGER executePython
  AFTER INSERT ON mytable
  FOR EACH ROW
  BEGIN
  SYSTEM('python MyApp');
  END;

有人能帮我吗?

(涉及IT技术的话题)
1个回答

9

您能安装扩展吗?如果可以,您可以使用 PL/Python 扩展

CREATE FUNCTION callMyApp()
RETURNS VOID
AS $$
import subprocess
subprocess.call(['/usr/bin/python', '/path/to/MyApp'])
$$ LANGUAGE plpythonu;

CREATE TRIGGER executePython 
AFTER INSERT ON messages 
FOR EACH ROW EXECUTE PROCEDURE callMyApp();

请注意,此操作将以postgres用户身份运行,因此可能会出现权限问题。
还有一个名为PL/SH的扩展程序,可能会有用,但似乎不是官方包。
CREATE FUNCTION executePython()
RETURNS VOID
AS $$
#!/bin/sh
python /path/to/MyApp
$$
LANGUAGE plsh;

这篇博客文章可能对您有所帮助。

此外,这几乎是与在Postgres写入数据库记录时运行shell脚本主题相同的内容。

(注意:我尚未测试过任何此代码。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接