postgres和python

时间:2012-12-31 22:03:49

标签: python postgresql plpython

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

CREATE FUNCTION one ()
RETURNS int
AS $$
# PL/Python function body
$$ LANGUAGE plpythonu;

我收到错误:

ERROR:  language "plpythonu" does not exist
HINT:  Use CREATE LANGUAGE to load the language into the database.

当我跑步时:

CREATE LANGUAGE plpythonu

我收到错误:

ERROR:  could not access file "$libdir/plpython2": No such file or directory

我正在使用Windows 7和python 2.5。

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

有什么想法吗?

5 个答案:

答案 0 :(得分: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。

    < / LI>
  4. 现在再次运行'CREATE LANGUAGE plpython3u'命令。这次应该可以工作。

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

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

答案 1 :(得分:7)

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

  • 安装Python 3.2
  • 运行CREATE LANGUAGE plpython3u

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

答案 2 :(得分:5)

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

答案 3 :(得分:1)

我安装了python 3.2(x64)和postgres 9.3(x64)

执行此代码CREATE EXTENSION plpython3u

不要忘记检查“installation-note.html”你的postgresSQL版本你的postgresSQL有特定的python版本

答案 4 :(得分:0)

很抱歉挖掘,但对于所有正在寻找丢失数据包的人(在我的情况下是在 Ubuntu 18.04 上):

sudo apt-get install -y postgresql-plpython3-10

然后:

create extension plpython3u;