Подтвердить что ты не робот

Как reset db в Django? Я получаю команду 'reset' не найдена ошибка

Следуя этому Django по примеру tutotrial здесь: http://lightbird.net/dbe/todo_list.html

В учебнике говорится:

"Это изменяет наш макет таблицы и хорошо спросить Django resetи воссоздать таблицы:

manage.py reset todo; manage.py syncdb"

хотя, когда я запускаю manage.py reset todo, я получаю ошибку:

$ python manage.py reset todo                                       
- Unknown command: 'reset'

Это потому, что я использую sqlite3, а не postgresql?

Может кто-нибудь сказать мне, что команда для reset базы данных?

Команда: python manage.py sqlclear todo возвращает ошибку:

$ python manage.py sqlclear todo    
CommandError: App with label todo could not be found.    
Are you sure your INSTALLED_APPS setting is correct?

Итак, я добавил "todo" в мой INSTALLED_APPS в settings.py и снова запустил python manage.py sqlclear todo, в результате чего эта ошибка:

$ python manage.py sqlclear todo                                      
- NameError: name 'admin' is not defined
4b9b3361

Ответ 1

reset был заменен на flush на Django 1.5, см.

python manage.py help flush

Ответ 2

Похоже, что ответ "flush" будет работать для некоторых, но не для всех случаев. Мне нужно было не только сбросить значения в базе данных, но и правильно воссоздать таблицы. Я пока не использую миграции (первые дни), поэтому мне действительно нужно было удалить все таблицы.

Я нашел два способа отбросить все таблицы, оба требуют чего-то другого, кроме основного django.

Если вы на Heroku, удалите все таблицы с помощью pg: reset:

heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb

Если вы можете установить расширения Django, у него есть способ сделать полный сброс:

python ./manage.py reset_db --router=default

Ответ 3

Как и в ответ LisaD, Django Extensions имеет отличную команду reset_db, которая полностью отбрасывает все, а не просто обрезает таблицы, подобные "flush". Вы должны указать маршрутизатор, чтобы он выглядел так:

python ./manage.py reset_db --router=default

Простое удаление таблиц не фиксировало постоянную ошибку, которая произошла, когда я удалял объекты. Выполнение reset_db исправило проблему.

Ответ 4

если вы используете Django 2.0 Тогда

python manage.py flush 

будет работать

Ответ 5

С django 1.11 просто удалите все файлы миграции из папки migrations каждого приложения (все файлы, кроме __init__.py). Тогда

  • Вручную удалить базу данных.
  • Вручную создать базу данных.
  • Запустите python3 manage.py makemigrations.
  • Запустите python3 manage.py migrate.

И voilla, ваша база данных была полностью reset.

Ответ 6

Если вы хотите очистить всю базу данных, вы можете использовать: python manage.py flush Если вы хотите очистить таблицу базы данных приложения Django, вы можете использовать: python manage.py migrate appname zero

Ответ 7

Для меня это решило проблему.

heroku pg:reset DATABASE_URL

heroku run bash
>> Inside heroku bash
cd app_name && rm -rf migrations && cd ..
./manage.py makemigrations app_name
./manage.py migrate

Ответ 8

Просто выполните ответ @LisaD.
Начиная с 2016 года (Django 1.9) вам нужно ввести:

heroku pg:reset DATABASE_URL
heroku run python manage.py makemigrations
heroku run python manage.py migrate

Это даст вам новую новую базу данных в Heroku.

Ответ 10

  1. Просто вручную удалите вашу базу данных. Сначала убедитесь, что вы создали резервную копию (в моем случае db.sqlite3 - это моя база данных)

  2. Запустите эту команду manage.py migrate

Ответ 11

python manage.py flush

удалил старое содержимое БД,

Не забудьте создать нового суперпользователя:

python manage.py createsuperuser