在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。
我在许多地方看过但找不到解决方案。
有什么想法吗?
答案 0 :(得分:9)
我刚刚解决了这个问题,几天之前。解决方案非常复杂。在这里。
在Postgresql中使用'CREATE LANGUAGE plpython3u'命令来安装Python 3语言支持。通常情况下,它会给出以下错误“无法加载”..... \ plpython3.dll“错误126.(注意如果安装正确,将不会显示错误。)
如果您收到上述错误,请转到您的python安装目录(默认为C:\ python32)并在DLL的文件夹中查找“python3.dll”。将此文件复制到Postgres安装目录中的Postgresql'lib'文件夹(默认为c:\ program files \ postgres \ 9.x \ lib \“)。将此复制的文件重命名为python32.dll。
< / LI>现在再次运行'CREATE LANGUAGE plpython3u'命令。这次应该可以工作。
要验证,请查看postgresql系统表中的pg_available_extensions视图。包含plpython3u的行应在“已安装版本”列中具有版本号。
注意:这仅适用于plpython3u语言。我不知道plpython2u的任何类似过程。
答案 1 :(得分:7)
要为plpython3解决此问题,有必要:
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;