Tem a ver com o modelo de objeto do Python - sempre há uma maneira de obter uma referência a objetos que podem não ser seguros. Consulte a documentação do módulo rexec e o capítulo de execução restrita dos documentos para obter algumas informações sobre os problemas, bem como:
As limitações não têm nada a ver com o PostgreSQL, são inerentes à implementação do interpretador CPython ou, possivelmente, até à linguagem Python.
Algumas outras linguagens verificaram tempos de execução, como Perl, Java, JavaScript e Lua. A maioria deles enfrentou uma série de problemas de segurança, pois esses ambientes de execução confinados são muito difíceis de proteger contra todas as possíveis explorações de jailbreak.
Não há realmente nada impedindo o PostgreSQL de adicionar um interpretador Python semitrusted, pois o rexec é "bom o suficiente" para muitos propósitos. O PostgreSQL não tende a gostar apenas de apenas o tipo de bom o suficiente. Provavelmente, isso só será aceito se marcado como somente superusuário, mas você sempre poderá conceder acesso a ele para usuários específicos. Seria melhor do que Python não confiável.
Pessoalmente, acho que o PL / V8 ou similar é o futuro aqui e gostaria de vê-lo avançar para ser apoiado no núcleo.
Eu também explorei vagamente a idéia de um Mono confiável que pode carregar assemblies "seguros" escritos em C #, VB.NET, IronPython ou qualquer outra coisa, mas que não conseguiu fazer muito sobre esse tópico.