Сброс базы данных 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) у меня есть кнопка "Сбросить данные", и при нажатии она должна удалить все данные, выполнить syncdb и выполнить миграцию.
Кто-нибудь знает, как я могу это сделать?
Спасибо