Capítulo 46. PL/Python – Linguagem procedural Python

Índice

46.1. Python 2 vs. Python 3
46.2. Funções em PL/Python
46.3. Valores de dados
46.3.1. Mapeamento de tipo de dados
46.3.2. Null, None
46.3.3. Matrizes, Listas
46.3.4. Tipos de dados compostos
46.3.5. Funções que retornam conjunto
46.4. Compartilhamento de dados
46.5. Blocos de código anônimos
46.6. Funções de gatilho
46.7. Acesso ao banco de dados
46.7.1. Funções de acesso ao banco de dados
46.7.2. Captura de erros
46.8. Subtransações explícitas
46.8.1. Gerenciadores de contexto de subtransação
46.8.2. Versões antigas do Python
46.9. Gerenciamento de transações
46.10. Funções utilitárias
46.11. Variáveis de ​​ambiente

A linguagem procedural PL/Python permite que funções e procedimentos do PostgreSQL sejam escritos na linguagem Python.

Para instalar o PL/Python em um banco de dados específico, deve ser usado o comando CREATE EXTENSION plpython3u (mas veja também Python 2 vs. Python 3).

Dica

Se uma linguagem for instalada no banco de dados template1, todos os bancos de dados criados posteriormente terão essa linguagem instalada automaticamente.

O PL/Python está disponível apenas como uma linguagem não confiável (untrusted), significando que não oferece nenhuma maneira de restringir o que os usuários podem fazer com ela e, portanto, é chamada de plpython3u. Uma variante confiável plpython3 poderá se tornar disponível no futuro, se um mecanismo de execução seguro for desenvolvido em Python. O autor de uma função escrita em PL/Python não confiável deve tomar cuidado para que a função não seja usada para fazer algo indesejado, porque ela poderá fazer qualquer coisa que poderia ser feita por um usuário conectado como administrador do banco de dados. Somente os superusuários podem criar funções em linguagens não confiáveis, como o plpython3u.

Nota

Os usuários de distribuição do código-fonte devem ativar especificamente a construção do PL/Python durante o processo de instalação. (Veja Instalação a partir do código-fonte para obter mais informações.) Os usuários de pacotes binários podem encontrar o PL/Python em um pacote separado [182].



[182] No pacote postgresql-plpython3 no Fedora Linux 37. (N. T.)

Contato

CSS válido!