1

我正在尝试在 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 的面板)中,我有一个“重置数据”按钮,当单击它时,它必须删除所有数据,执行同步数据库并迁移。

有谁知道我该怎么做?

谢谢

4

0 回答 0