Что такое команда django для удаления всех таблиц?
Существуют ли команды django, которые
а. Удалить все таблицы
В. удалить все данные во всех таблицах
С. Создать все таблицы, как определено в модели?
Я не могу найти их прямо сейчас!
И по командам я имею в виду те маленькие вещи, которые похожи на
runserver
и т.д.
Ответы
Ответ 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
Ответ 3
Ни manage.py sqlclear
, ни manage.py reset
не может сразу отбрасывать все таблицы, оба требуют параметр appname
.
Вы должны взглянуть на Django Extensions, он дает вам доступ к manage.py reset_db
, а также многие другие полезные команды управления.
Ответ 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()
он должен вернуть []. Надеюсь, это поможет.
Ответ 7
A означает B, right?
Для A см. Как удалить все таблицы из базы данных с помощью manage.py CLI в Django?
Для C,
python manage.py syncdb
Конечно, для миграции интеллектуальных данных я иду с тем, о чем упоминал @bento: django-south