Как установить функции sql при запуске приложения django - PullRequest
1 голос
/ 19 апреля 2019

У меня есть приложение, которое использует функции SQL для некоторых своих запросов.

На данный момент я написал функцию установки, которая устанавливает функции SQL через курсор:

def install_all():
    install(FUNC1)
    install(FUNC2)
    install(FUNC3)

def install(script):

    with connection.cursor() as cursor:
        cursor.execute(script)

Я добавил вызов install_all() внутри одного из __init__.py проекта, чтобы при каждом запуске проекта переустанавливать функции (в случае их изменения).

Я действительно это делаю not хочу сделать это с помощью ручных миграций.

Проблема, с которой я столкнулся в последнее время, заключается в том, что это создает открытое соединение с БД и препятствует работе таких вещей, как manage reset_db, из-за открытого соединения.,Даже manage dbshell открывается с существующим подключением к БД от курсора.Предположительно курсор выполняется, сокет не закрыт, и exec 'ed psql наследует все еще открытый сокет.

Сейчас я изменил его на:

from django.db import connection    

def install_all():
    install(FUNC1)
    install(FUNC2)
    install(FUNC3)          
    connection.close()

... и это работает, но кажется неуклюжим.

Существует ли явно поддерживаемый способ включения этого кода запуска в приложение Django?

версия: Django 1.11

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