我正在尝试在 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
这个有效。但是,当我终止了与数据库的所有连接时,我的应用程序没有响应(这是合乎逻辑的)。
我必须从应用程序中重置我的所有基础。例如,在我的管理面板(不是来自 Django 的面板)中,我有一个“重置数据”按钮,当单击它时,它必须删除所有数据,执行同步数据库并迁移。
有谁知道我该怎么做?
谢谢