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

Как удалить таблицу из SQLite3 в DJango?

Я сделал модель и запустил python manage.py syncdb. Я думаю, что создал таблицу в db. Затем я понял, что неправильно сделал столбец, поэтому я его поменял и выполнил ту же команду, считая, что он потеряет старую таблицу и добавит новую.

Затем я перешел на python manage.py shell и попытался запустить .objects.all(), и он потерпел неудачу, сказав, что столбец не существует.

Я хочу удалить старую таблицу, а затем снова запустить syncdb, но я не могу понять, как это сделать.

4b9b3361

Ответ 1

Еще один простой способ сделать это при использовании Django 1.4 или ниже -

python manage.py reset app_name

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

Это было устарело в Django 1.3 и больше не доступно из Django 1.5

Ответ 2

чтобы очистить приложение, так же просто, как и запись:

./manage.py sqlclear app_name | ./manage.py dbshell 

то для того, чтобы перестроить ваши таблицы, просто введите:

./manage.py syncdb

Ответ 3

Ни один из ответов не показывает, как удалить только одну таблицу в приложении. Это не слишком сложно. Команда dbshell регистрирует пользователя в оболочке sqlite3.

python manage.py dbshell

Когда вы находитесь в оболочке, введите следующую команду, чтобы увидеть структуру вашей базы данных. Это покажет вам все имена таблиц в базе данных (а также имена столбцов в таблицах).

SELECT * FROM sqlite_master WHERE type='table';

В общем, Django называет таблицы в соответствии со следующим соглашением: "appname_modelname". Поэтому SQL-запрос, который выполняет вашу задачу, будет выглядеть примерно так:

DROP TABLE appname_modelname;

Этого должно быть достаточно, даже если таблица имела отношения с другими таблицами. Теперь вы можете выйти из оболочки SQLITE, выполнив:

.exit

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

Ответ 4

получить инструкции DROP с помощью

python manage.py sqlclear app_name

затем попробуйте

python manage.py dbshell

и выполните оператор DROP

проверить http://docs.djangoproject.com/en/dev/ref/django-admin/

Ответ 5

У меня была та же проблема.

Для быстрого решения (если вы не хотите потерять свои таблицы/данные), скорректируйте файл models.py с требуемыми типами данных, удалите папку миграции и файл db.SQLite3,

затем запустите следующие команды:

  • python manage.py migrate
  • python manage.py makemigrations
  • python manage.py migrate
  • python manage.py createuperuser (для создания пользователя admin/pswd для управления страницей администратора)
  • python manage.py runningerver

Ответ 6

В Django 1.9 мне пришлось делать шаги Кэт Руссо, но вторая миграция была немного сложной. Вы должны запустить

./manage.py migrate --run-syncdb