运行时重置Django数据库

时间:2013-09-18 08:32:29

标签: python django django-models reset django-postgresql

我正在尝试重置我的数据库,而Django项目正在运行,但我遇到了麻烦。由于数据库和模型之间的映射,Django一直在与数据库进行交互。

我正在使用模块reset_db,如下所示:

from django.core import management
management.call_command('reset_db',router='default',interactive = False)

我正在使用postgres,当这个命令运行时,我有这个错误:

OperationalError: database "XXX" is being accessed by other users
DETAIL:  There are 1 other session(s) using the database.

我试图从psycopg2删除数据库,但我仍然有这个问题。 我也试过蛮力,发动了一个杀死所有联系的外部脚本:

os.system("bash myscript.sh")

我的剧本:

psql -U myuser -d mybase -c "select pg_terminate_backend(pg_stat_activity.procpid) from pg_stat_activity where pg_stat_activity.datname='mybase';"
./manage.py reset_db --router=default --noinput

这个有效。但是,当我杀死所有与数据库的连接时,我的应用程序没有回答(这是合乎逻辑的)。

我必须从应用程序重置我的所有基础。例如,在我的管理pannel(不是来自Django的那个)中,我有一个“重置数据”按钮,当点击它时,它必须删除所有数据,执行syncdb和迁移。

有谁知道我该怎么办?

由于

0 个答案:

没有答案