如何在Django应用启动时安装sql函数

时间:2019-04-19 18:39:29

标签: django

我有一个使用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中添加了一个调用,以便每次运行项目时,它都会重新安装功能(以防它们被更改。)

我真的想通过手动迁移来做到这一点。

我最近遇到的问题是,这将建立与数据库的开放连接,并由于开放连接而阻止诸如manage reset_db之类的工作。甚至manage dbshell也会打开,并具有从游标到db的现有连接。大概是游标执行了,套接字没有关闭,并且exec编辑的psql继承了仍然打开的套接字。

现在我将其更改为:

from django.db import connection    

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

...这可行,但似乎用力很大。

是否有明确支持的将该启动代码合并到Django应用中的方法?

版本:Django 1.11

0 个答案:

没有答案