Хранимые процедуры в Python для PostgreSQL - PullRequest
10 голосов
/ 26 января 2010

мы все еще новички в 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 Ответ

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...