Каков самый простой способ очистить базу данных от CLI с помощью manage.py в Джанго?
4 ответов
если вы не заботитесь о данных:
лучшим способом было бы удалить базу данных и запустить syncdb
снова. Или вы можете запустить:
Для Django >= 1.5
python manage.py flush
Для Django
python manage.py reset appname
(вы можете добавить --no-input
до конца команды, чтобы пропустить интерактивное приглашение.)
если вы заботитесь о данных:
документы:
syncdb будет создавать только таблицы для модели, которых еще нет было установленный. Это не проблема переделать Инструкции TABLE для сопоставления внесенных изменений к классу модели после установки. Изменения в классах моделей и базе данных схемы часто включают в себя некоторую форму двусмысленность и, в этих случаях, Django нужно угадать правильный нужно внести изменения. Существует риск, что критические данные будут потеряны в процесс.
если вы внесли изменения в модель и хотите изменить таблицы базы данных чтобы соответствовать, используйте команду sql для отображение новой структуры SQL и сравните это с существующей таблицей схема для разработки изменений.
https://docs.djangoproject.com/en/dev/ref/django-admin/
ссылка: FAQ - https://docs.djangoproject.com/en/dev/faq/models/#if-i-make-changes-to-a-model-how-do-i-update-the-database
люди также рекомендуют Юг (http://south.aeracode.org/docs/about.html#key-features), но я не пробовал.
используя Расширения Django, работает:
./manage.py reset_db
очистить все таблицы базы данных, затем работает:
./manage.py syncdb
воссоздаст их (Юг может попросить вас перенести вещи).
Я думаю, что Джанго docs явно упомяните, что если намерение состоит в том, чтобы снова начать с пустой БД (что, похоже, является намерением OP), то просто отбросьте и повторно создайте базу данных и повторно запустите migrate
(вместо flush
):
Если вы предпочитаете начать с пустой базы данных и повторно запустите все миграции, вы должны удалить и воссоздать базу данных, а затем запустить вместо этого мигрируйте.
поэтому для случая OP нам просто нужно кому:
- отбросьте базу данных из MySQL
- пересоздать базу данных
- выполнить
python manage.py migrate
Quickest (отбрасывает и создает все таблицы, включая данные):
./manage.py reset appname | ./manage.py dbshell
внимание:
- может работать в Windows неправильно.
- может сохранить некоторые старые таблицы в db