我有一个使用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