我想在我的 postgresql 数据库中使用 python3 来编写存储过程。
在psql
客户端中,当我输入命令时create extension plpython3u
出现错误:
couldn't open extension control file /usr/share/postgresql/9.1/extension/plpython3u.control : No such file or directory
我检查了,目录中有 plpythonu.control 和 plpython2u.control,但不是版本 3 的那个。
但是我已经从仓库安装了软件包python3
和python3-postgresql
(以及其他)。我使用的是 Ubuntu 12.04,内核 3.2.0.38,安装了 postgresql 9.1。
我应该安装(或做什么)以在我的机器上安装 plpython3u.control 文件并在我的数据库中使用 python3?
要安装的包是
postgresql-plpython3
.通过依赖关系,这将 install
postgresql-plpython3-9.1
,它提供了这些文件:然后你可以这样做:
检查拼写
每当您创建一个不可用的扩展时,您都会收到此消息。运行时我遇到了同样的错误,但
CREATE EXTENSION plpython3u
有拼写错误。检查正确的 Python 版本
另一个想法是您需要正确的 Python 版本。Windows 和 Linux 的正确版本不同。通常,您不应自己安装确切的版本,而应使用安装程序(Windows:EDB 和 Stack Builder --> 语言包,Linux:关注PostgreSQL:如何安装 plpythonu 扩展。
视窗
如果使用 Windows 安装程序,您需要安装适合您的 PostgreSQL 版本的正确Python 版本,并设置 Python 的 PATH 变量(至少在 Windows 上也是如此,尽管这应该使用 Python 自动完成无论如何安装)。
在 Windows 上,您查找
C:\Program Files\PostgreSQL\13\doc\installation-notes.html
要为已安装的 PostgreSQL 版本安装的所需 Python 版本。就我而言,使用 PostgreSQL 13:因此,Windows 上需要 Python 3.7。
我从 Stack Overflow PostgreSQL 13 + Python 3.7.9 + plpython3u 的 Windows PostgreSQL + plpython3u 安装概述中获取了这个:'psql:服务器意外关闭了连接。+ '应用程序已失去数据库连接。' .
Linux
在 Linux 上,我找不到
installation-notes.html
像在 Windows 上那样具有所需 Python 版本的文件。在已安装 plpython3u 的 PostgreSQL 中直接检查 Python 版本作为存储过程:
输出:
测试:
显示对于“PostgreSQL 13”,安装了“Python 3.8.10”。Linux 安装程序似乎比 Windows 安装程序更受关注,因此可能有更新的 Python 版本。
因此,在 9/2021 中,您需要安装 Python
3.8.10
才能使此扩展工作。不过,它应该由 linux 安装程序自动安装,但你至少可以检查一下你是否在正确的方式,你应该找到它:输出: