Каков хороший способ управления функциями PL / pgSQL в проекте Django?

#django #plpgsql

#django #plpgsql

Вопрос:

В проекте Django я использую несколько пользовательских функций PL / pgSQL. До сих пор я использовал миграции для добавления их в базу данных. Однако я думаю, что это не лучший способ сделать это, особенно если вам нужно время от времени добавлять некоторые изменения. Что вы считаете лучшим способом организации функций вашей базы данных в среде Django?

Может быть, как приспособления? Может быть, как пользовательский обработчик сигнала post_sync?

Комментарии:

1. Я использую миграции и считаю, что это лучшее место для этого. Я предваряю каждую функцию CREATE OR REPLACE (...) , поэтому я могу легко изменить ее при будущей миграции, если это необходимо.

2. Да, это то, что я тоже делал. Но всегда чувствовал, что исправление ошибок и расширение функции — это боль. Я должен снова добавить весь код в новую миграцию и не смог работать с файлом, который загружается динамически.

3. Хорошо, но вы не можете изменить функцию PL / pgSQL без копирования кода, поэтому я немного в замешательстве, как именно вы хотите изменить / отредактировать функцию.

4. Конечно, но при миграции мне потребуется предоставить «старую» функцию в backward миграции и новую (измененную версию) в forward части, и то, и другое я должен создать / скопировать вручную. Поэтому было бы проще (я думаю) иметь эту функцию в файле и загружать ее после каждой миграции. По сути, о перемотке вперед / назад заботится система управления версиями. Используя этот способ, мне не нужно было бы копировать код функции в новый файл (например, при миграции), но я бы использовал — также для тестирования! —файл, в котором функция находится в любом случае.