如何在PostgreSql中执行存储过程的python脚本?

时间:2015-12-17 16:25:29

标签: postgresql

我想在PostgreSql

中执行一个存储过程的python脚本

我想要这样的事情:

 CREATE TRIGGER executePython
  AFTER INSERT ON mytable
  FOR EACH ROW
  BEGIN
  SYSTEM('python MyApp');
  END;

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

您是否可以安装扩展程序?如果是这样,您可以使用the PL/Python extension

SELECT * 
FROM FRUITS 
WHERE FRUIT IN (SELECT FRUIT FROM FRUITS WHERE GROUP = 'APPLES');

请注意,这将作为postgres用户运行,因此可能存在权限问题。

还有一个名为PL/SH的扩展程序,它可能有用,但似乎不是官方程序包。

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();

This blog post也可能对你感兴趣。

此外,这几乎与这个名为Run a shell script when a database record is written to postgres的帖子重复。

(注意:我还没有对这些代码进行测试。)