我想从 PostgreSql 中的存储过程执行 python 脚本
我想要这样的东西:
CREATE TRIGGER executePython
AFTER INSERT ON mytable
FOR EACH ROW
BEGIN
SYSTEM('python MyApp');
END;
谁能帮帮我,好吗?
最佳答案
你能安装扩展吗?如果是这样,您可以使用 the PL/Python
extension
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;
This blog post您可能也会感兴趣。
此外,这几乎是标题为 Run a shell script when a database record is written to postgres 的帖子的重复.
(注意:我还没有测试任何这段代码。)
关于postgresql - 如何从 PostgreSql 中的存储过程执行 python 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34339547/