Хранимые процедуры в Python для PostgreSQL

мы все еще довольно новички в Postgres и пришли из Microsoft Sql Server.

теперь мы хотим написать некоторые хранимые процедуры. Ну, после борьбы, чтобы получить что-то более сложное, чем hello world чтобы работать в pl/pgsql, мы решили, что лучше, если мы будем изучать новый язык, мы могли бы также изучить Python, потому что мы получили тот же запрос, работающий в нем примерно за 15 минут(обратите внимание, никто из нас на самом деле не знает python).

Так у меня есть несколько вопросов об этом сравнение с pl / psql.

  1. PL / Pythonu медленнее, чем pl/pgsql?
  2. есть ли какая-либо" хорошая " ссылка на то, как писать хорошие хранимые процедуры с ее помощью? Пять коротких страниц в документации Postgres на самом деле не говорят нам достаточно.
  3. как насчет подготовки запроса? Должен ли он всегда использоваться?
  4. если мы используем массивы SD и GD для многих планов запросов, будет ли он когда-либо слишком полным или отрицательно повлияет на сервер? Это автоматически удалять старые значения, если он становится слишком полным?
  5. есть ли надежда, что он станет надежным языком?

также, наше использование хранимой процедуры весьма светло. Сейчас у нас есть только 4, но мы все еще пытаемся преобразовать небольшие биты кода из синтаксиса Sql Server (например, переменные, которые не могут использоваться в Postgres вне хранимых процедур)

1 ответов


  1. зависит от того, какие операции вы делаете.
  2. ну, объедините это с общей документацией Python, и это о том, что у вас есть.
  3. нет. Опять же, зависит от того, что вы делаете. Если вы собираетесь выполнить запрос только один раз, нет смысла готовить его отдельно.
  4. Если вы используете постоянные соединения, это может. Но они очищаются всякий раз, когда связь закрыта.
  5. Не может. Песочница сломана в Python и AFAIK никто не заинтересован в его исправлении. Я слышал, как кто-то сказал, что python-on-parrot может быть самым жизнеспособным способом, когда у нас есть PL/parrot (которого мы еще не имеем).

итог: если ваши хранимые процедуры будут работать с базой данных, используйте pl / pgsql. Используйте только pl / python, если вы собираетесь делать вещи без базы данных, такие как разговор с внешними библиотеками.