Каков самый простой способ очистить базу данных от CLI с помощью manage.py в Джанго?



Я использую Django для создания веб-сайта с MySQL. Теперь, когда я учусь, мне нужно очень часто менять модель, поэтому я хочу, чтобы все таблицы очищались и создавались новые таблицы.



но syncdb не касается существующих таблиц. Есть ли лучший способ справиться с этой проблемой?

575   4  

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):

Если вы предпочитаете начать с пустой базы данных и повторно запустите все миграции, вы должны удалить и воссоздать базу данных, а затем запустить вместо того, чтобы мигрировать.

Так что для случая ОП, нам просто нужно к:

  1. отбросьте базу данных из MySQL
  2. пересоздать базу данных
  3. выполнить python manage.py migrate

самый быстрый (отбрасывает и создает все таблицы, включая данные):

./manage.py reset appname | ./manage.py dbshell

внимание:

  • может не работать на Windows правильно.
  • может сохранить некоторые старые таблицы в БД

Comments

    Ничего не найдено.