Как сбросить БД в Django? Я получаю команду "сброс" не найдена ошибка


следуя этому Джанго на примере tutotrial здесь:http://lightbird.net/dbe/todo_list.html

в учебнике написано:

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

manage.py reset todo; manage.py syncdb"

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

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

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

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

команды: 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
9 67

9 ответов:

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

python manage.py help flush

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

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

Если вы находитесь на Heroku, отбросьте все таблицы с pg: reset:

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

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

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

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

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

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

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

python manage.py flush 

совместимость

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

  1. удалить базу данных вручную.
  2. вручную создать базу данных.
  3. выполнить python3 manage.py makemigrations.
  4. выполнить python3 manage.py migrate.

и вуаля, ваша база данных была полностью сброшена.

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

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

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

только в @LisaD это ответ.
В 2016 году (Django 1.9), вам нужно набрать:

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

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

Если вы используете миграции, это ссылке имеет множество решений в зависимости от сценария.