Это связано с объектной моделью Python - всегда есть способ получить ссылку на объекты, которые могут быть небезопасными. См. Документацию к модулю rexec и главу с ограниченным исполнением в документации для получения дополнительной информации о проблемах, а также:
Ограничения не имеют ничего общего с самим PostgreSQL, они присущи реализации интерпретатора CPython или, возможно, даже самому языку Python.
Некоторые другие языки проверяли среды выполнения, такие как Perl, Java, JavaScript и Lua. Большинство из них столкнулись с рядом проблем безопасности, поскольку такие ограниченные среды исполнения очень трудно защитить от всех возможных взломов.
На самом деле ничто не мешает PostgreSQL добавить интерпретатора Python с поличным доверием, поскольку rexec достаточно хорош для многих целей. PostgreSQL не склонен увлекаться только - в основном - достаточно хорошо - возможно, хотя. Вероятно, он будет принят только в том случае, если он помечен как суперпользовательский, но вы всегда можете предоставить доступ к нему конкретным пользователям. Это было бы лучше, чем ненадежный Python.
Лично я думаю, что PL / V8 или подобное - это будущее здесь, и я хотел бы видеть его движение в сторону поддержки в ядре.
Я также смутно исследовал идею надежного Mono, который может загружать «безопасные» сборки, написанные на C #, VB.NET, IronPython или чем-то еще, но не смог сделать много на эту тему.