#django #plpgsql
#django #plpgsql
Вопрос:
В проекте Django я использую несколько пользовательских функций PL / pgSQL. До сих пор я использовал миграции для добавления их в базу данных. Однако я думаю, что это не лучший способ сделать это, особенно если вам нужно время от времени добавлять некоторые изменения. Что вы считаете лучшим способом организации функций вашей базы данных в среде Django?
Может быть, как приспособления? Может быть, как пользовательский обработчик сигнала post_sync?
Комментарии:
1. Я использую миграции и считаю, что это лучшее место для этого. Я предваряю каждую функцию
CREATE OR REPLACE (...)
, поэтому я могу легко изменить ее при будущей миграции, если это необходимо.2. Да, это то, что я тоже делал. Но всегда чувствовал, что исправление ошибок и расширение функции — это боль. Я должен снова добавить весь код в новую миграцию и не смог работать с файлом, который загружается динамически.
3. Хорошо, но вы не можете изменить функцию PL / pgSQL без копирования кода, поэтому я немного в замешательстве, как именно вы хотите изменить / отредактировать функцию.
4. Конечно, но при миграции мне потребуется предоставить «старую» функцию в
backward
миграции и новую (измененную версию) вforward
части, и то, и другое я должен создать / скопировать вручную. Поэтому было бы проще (я думаю) иметь эту функцию в файле и загружать ее после каждой миграции. По сути, о перемотке вперед / назад заботится система управления версиями. Используя этот способ, мне не нужно было бы копировать код функции в новый файл (например, при миграции), но я бы использовал — также для тестирования! —файл, в котором функция находится в любом случае.