Хранимые процедуры в Python для PostgreSQL
мы все еще довольно новички в Postgres и пришли из Microsoft Sql Server.
теперь мы хотим написать некоторые хранимые процедуры. Ну, после борьбы, чтобы получить что-то более сложное, чем hello world
чтобы работать в pl/pgsql, мы решили, что лучше, если мы будем изучать новый язык, мы могли бы также изучить Python, потому что мы получили тот же запрос, работающий в нем примерно за 15 минут(обратите внимание, никто из нас на самом деле не знает python).
Так у меня есть несколько вопросов об этом сравнение с pl / psql.
- PL / Pythonu медленнее, чем pl/pgsql?
- есть ли какая-либо" хорошая " ссылка на то, как писать хорошие хранимые процедуры с ее помощью? Пять коротких страниц в документации Postgres на самом деле не говорят нам достаточно.
- как насчет подготовки запроса? Должен ли он всегда использоваться?
- если мы используем массивы SD и GD для многих планов запросов, будет ли он когда-либо слишком полным или отрицательно повлияет на сервер? Это автоматически удалять старые значения, если он становится слишком полным?
- есть ли надежда, что он станет надежным языком?
также, наше использование хранимой процедуры весьма светло. Сейчас у нас есть только 4, но мы все еще пытаемся преобразовать небольшие биты кода из синтаксиса Sql Server (например, переменные, которые не могут использоваться в Postgres вне хранимых процедур)
1 ответов
- зависит от того, какие операции вы делаете.
- ну, объедините это с общей документацией Python, и это о том, что у вас есть.
- нет. Опять же, зависит от того, что вы делаете. Если вы собираетесь выполнить запрос только один раз, нет смысла готовить его отдельно.
- Если вы используете постоянные соединения, это может. Но они очищаются всякий раз, когда связь закрыта.
- Не может. Песочница сломана в Python и AFAIK никто не заинтересован в его исправлении. Я слышал, как кто-то сказал, что python-on-parrot может быть самым жизнеспособным способом, когда у нас есть PL/parrot (которого мы еще не имеем).
итог: если ваши хранимые процедуры будут работать с базой данных, используйте pl / pgsql. Используйте только pl / python, если вы собираетесь делать вещи без базы данных, такие как разговор с внешними библиотеками.