postgres和python

Jim*_*Jim 19 python postgresql plpython

在postgres 9.2中,我试图创建一个可以作为触发器的python程序.我想运行一个外部程序(本地磁盘上的exe),所以我使用python来运行它.当我尝试创建一个这样的简单程序时:

CREATE FUNCTION one ()
RETURNS int
AS $$
# PL/Python function body
$$ LANGUAGE plpythonu;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ERROR:  language "plpythonu" does not exist
HINT:  Use CREATE LANGUAGE to load the language into the database.
Run Code Online (Sandbox Code Playgroud)

当我跑:

CREATE LANGUAGE plpythonu
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ERROR:  could not access file "$libdir/plpython2": No such file or directory
Run Code Online (Sandbox Code Playgroud)

我使用的是Windows 7和python 2.5.

我在许多地方看过但找不到解决方案.

有任何想法吗?

Rag*_*mar 9

几天前我刚刚解决了这个问题.解决方案非常复杂.在这里.

  1. 仅在您的系统上安装python 3.2.*版本.
  2. 在Postgresql中使用'CREATE LANGUAGE plpython3u'命令来安装Python 3语言支持.通常情况下,它会给出以下错误"无法加载".....\plpython3.dll"错误126.(注意如果安装正确,将不会显示错误.)

  3. 如果您收到上述错误,请转到您的python安装目录(默认为C:\ python32)并在DLL的文件夹中查找"python3.dll".将此文件复制到Postgres安装目录中的Postgresql'lib'文件夹(默认为c:\ program files\postgres\9.x\lib \").将此复制的文件重命名为python32.dll.

  4. 现在再次运行'CREATE LANGUAGE plpython3u'命令.它应该这次工作.

要验证,请查看postgresql的系统表中的pg_available_extensions视图.包含plpython3u的行应在"已安装版本"列中具有版本号.

注意:这仅适用于plpython3u语言.我不知道plpython2u的任何类似过程.


Cra*_*ger 7

要为plpython3解决此问题,有必要:

  • 安装Python 3.2
  • CREATE LANGUAGE plpython3u

更新:我在这里写了一个更好的解释:https://stackoverflow.com/a/24218449/398670


jlu*_*jan 5

Postgres使用Python的ActiveState发行版.最有可能的是,你的2.5太过时了,Postgres无法加载plpython dll或没有安装它,因为没有合适的python.我认为最近的postgres是针对Python3而不是2.x的build6.您可以在postgres lib目录中查找plpython3.dll以找出您需要的内容.