Сброс базы данных 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 и выполнить миграцию.

Кто-нибудь знает, как я могу это сделать?

Спасибо

0 ответов

Другие вопросы по тегам