【发布时间】:2015-02-14 15:40:33
【问题描述】:
在 psql 中,可以使用 '\!调用 windows shell [windows shell 命令]',但我找不到 pl/pgsql 的等效功能。
唯一的可能是编写和编译一个访问 windows shell 的 C 函数。
当然,这只对本地数据库安装有意义; pl/pgsql 代码在服务器而不是客户端上执行,但在这种情况下两者都在同一台电脑上运行。
我需要执行一个 Python 函数,但我宁愿不为这个 .py 脚本加载 postgres python 语言扩展。
【问题讨论】:
-
我很困惑。
PL/pgSQL只是一种语言,psql是用于将用该语言编写的命令发送到数据库的实用程序。您可以将所有 PL/pgSQL 命令包装在 python 脚本中并执行(使用pg模块或其他一些 python postgres 模块)。 -
Petesh,我在 PL/pgSQL 中工作,并且在将 PLPythonu 链接到 PL/pgSQL 之后,确实可以将系统调用包装在 python 脚本中。这就是 Pavel Stehule 所建议的。很抱歉让您感到困惑。
-
嗯,不,我的意思是
!语法是psql工具的一个功能。像这样的大多数工具都有一个 bang 命令来拖放到 shell 确实在本地命令行上做一些事情并返回到你所在的位置。它与 pl/SQL 无关。您已声明希望该命令在客户端上运行。您还没有说应该在管道中的哪个位置运行系统级代码(并且“都在同一台电脑上运行”的语句似乎暗示您最好将 pl/SQL 调用包装在 python 中,而不是反过来。
标签: postgresql shell plpgsql