Eu quero ter python3 em meu banco de dados postgresql para escrever procedimentos armazenados.
Estando no psql
cliente, quando digito o comando create extension plpython3u
recebo o erro:
couldn't open extension control file /usr/share/postgresql/9.1/extension/plpython3u.control : No such file or directory
Eu verifiquei, há plpythonu.control e plpython2u.control no diretório, mas não o da versão 3.
No entanto, instalei os pacotes python3
e python3-postgresql
(entre outros) do depot. Estou usando o Ubuntu 12.04, kernel 3.2.0.38, com o postgresql 9.1 instalado.
O que devo instalar (ou fazer) para ter o arquivo plpython3u.control em minha máquina e ter python3 disponível em meu banco de dados?
O pacote a ser instalado é
postgresql-plpython3
.Por meio de dependências, isso instalará
postgresql-plpython3-9.1
, que fornece esses arquivos:e então você pode fazer:
Verifique a ortografia
Você recebe esta mensagem sempre que cria uma extensão que não está disponível. Eu tive o mesmo erro ao executar o
CREATE EXTENSION plpython3u
com um erro de ortografia.Verifique a versão correta do Python
Outra ideia é que você precisa da versão correta do Python. A versão correta difere entre Windows e Linux. Normalmente, você não deve instalar a versão exata, mas sim usar instaladores (Windows: EDB e Stack Builder --> Language pack, Linux: Follow PostgreSQL: how to install plpythonu extension .
janelas
No caso de usar um instalador do Windows, você precisa instalar a versão correta do Python que se adapta à sua versão do PostgreSQL e também definir as variáveis PATH do Python (pelo menos, isso também é necessário no Windows, embora isso deva ser feito automaticamente com o Python instalação de qualquer maneira).
No Windows, procure
C:\Program Files\PostgreSQL\13\doc\installation-notes.html
a versão necessária do Python a ser instalada para a versão instalada do PostgreSQL. No meu caso, com o PostgreSQL 13:Portanto, o Python 3.7 é necessário no Windows.
Tirei isso de uma visão geral da instalação do Windows PostgreSQL + plpython3u em Stack Overflow PostgreSQL 13 + Python 3.7.9 + plpython3u: 'psql: server closed the connection unexpectedly.' + 'O aplicativo perdeu a conexão com o banco de dados.' .
Linux
No Linux, não consegui encontrar esse
installation-notes.html
arquivo com a versão necessária do Python, como você encontra no Windows.Verificando a versão do Python diretamente como um procedimento armazenado no PostgreSQL com o plpython3u já instalado:
Resultado:
Teste:
mostra que para "PostgreSQL 13", "Python 3.8.10" é instalado. O instalador do Linux parece receber mais atenção do que o instalador do Windows e, portanto, pode ter uma versão mais recente do Python.
Assim, em 9/2021, você precisa ter o Python instalado
3.8.10
para fazer essa extensão funcionar. Ele deve ser instalado automaticamente pelo instalador do linux, mas você pode pelo menos verificar com isso se está no caminho certo, você deve encontrá-lo com:Resultado: