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

Что такое команда django для удаления всех таблиц?

Существуют ли команды django, которые

а. Удалить все таблицы

В. удалить все данные во всех таблицах

С. Создать все таблицы, как определено в модели?

Я не могу найти их прямо сейчас!

И по командам я имею в виду те маленькие вещи, которые похожи на

runserver

и т.д.

4b9b3361

Ответ 1

а. Удалить все таблицы

manage.py sqlclear распечатает инструкцию sql, чтобы удалить все таблицы

В. удалить все данные во всех таблицах

manage.py flush возвращает базу данных в состояние, в котором оно было, сразу после выполнения syncdb

С. Создать все таблицы, как определено в модели?

manage.py syncdb Создает таблицы базы данных для всех приложений в INSTALLED_APPS, чьи таблицы еще не созданы.

См. эту страницу для ссылки на все команды: https://docs.djangoproject.com/en/dev/ref/django-admin/

Но вы должны обязательно изучить south как уже упоминалось. Это лучший способ управлять вашей базой данных.

N.B: syncdb устарел в пользу миграции, поскольку Django 1.7.

Ответ 2

Если у вас установлены клиентские библиотеки для вашей базы данных, вы можете запустить это:

python manage.py sqlflush | python manage.py dbshell

Это не отбрасывает таблицы, а обрезает их.

Не существует команды, которая делает все за один раз, но этот "один лайнер" удалит все таблицы, а затем заново их создаст. Это будет работать, только если вы работаете в системе, которая предоставляет эти утилиты в оболочке.

echo 'from django.conf import settings; print settings.INSTALLED_APPS; quit();' | python manage.py shell --plain 2>&1 | tail -n1 | sed -r "s|^.*\((.*)\).*$|\1|; s|[',]| |g; s|django\.contrib\.||g" | xargs python manage.py sqlclear | python manage.py dbshell && python manage.py syncdb

Ответ 4

Я рекомендую использовать django-south. Он позволяет синхронизировать ваши модели с вашей базой данных не только при добавлении поля, но и при удалении поля/модели. Я действительно считаю, что это важный компонент построения сайта Django. После установки вы можете запустить команду, например:

./manage.py перенести ноль приложения

Вы можете узнать больше здесь: http://south.aeracode.org/docs/about.html

Ответ 5

И более простой oneliner, чтобы удалить все таблицы для django 1.5 +:

python2 manage.py sqlflush | sed 's/TRUNCATE/DROP TABLE/g'| python2 manage.py dbshell

Ответ 6

Мне удалось отбросить таблицы. Run

python manage.py sqlclear appname

Обратите внимание на приведенные команды. Затем запустите

python manage.py dbshell

Добавьте команды, заданные на первом шаге. построчно. Когда вы закончите, введите ".exit" (для SQlite3). Повторно протестируйте свою БД, и вам должно быть хорошо идти. Разумеется, проверьте таблицы:

python manage.py shell
>>> from yourapp import yourclasses
>>> yourviews.objects.all()

он должен вернуть []. Надеюсь, это поможет.