Каков самый простой способ очистить базу данных от CLI с помощью manage.py в Джанго?
Я использую Django для создания веб-сайта с MySQL. Теперь, когда я учусь, мне нужно очень часто менять модель, поэтому я хочу, чтобы все таблицы очищались и создавались новые таблицы.
но syncdb не касается существующих таблиц. Есть ли лучший способ справиться с этой проблемой?
4 ответов:
если вы не заботитесь о данных:
лучший способ было бы удалить базу данных и запустить
syncdbснова. Или вы можете запустить:Для Django >= 1.5
python manage.py flushДля Django
python manage.py reset appname(вы можете добавить
--no-inputдо конца команды для него, чтобы пропустить интерактивное приглашение.)если вы заботитесь о данных:
документы:
syncdb будет создавать таблицы только для модели, которых еще нет было установленный. Это не проблема переделать Табличные инструкции, соответствующие внесенным изменениям к классу модели после установки. Изменения в классах моделей и базе данных схемы часто включают в себя некоторые формы двусмысленность и, в этих случаях, 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):Если вы предпочитаете начать с пустой базы данных и повторно запустите все миграции, вы должны удалить и воссоздать базу данных, а затем запустить вместо того, чтобы мигрировать.
Так что для случая ОП, нам просто нужно к:
- отбросьте базу данных из MySQL
- пересоздать базу данных
- выполнить
python manage.py migrate
самый быстрый (отбрасывает и создает все таблицы, включая данные):
./manage.py reset appname | ./manage.py dbshellвнимание:
- может не работать на Windows правильно.
- может сохранить некоторые старые таблицы в БД
Comments