#django-models
#django-модели
Вопрос:
Я внес изменения в свой model.py в Django и теперь я хочу синхронизировать эти изменения. Можно удалить таблицы и создать их заново. Однако, похоже, ничего не работает. Я использую sqlite3:
syncdb: работает только в первый раз, без изменений
«python manage.py sql my_site», за которым следует syncdb: я думал, что это «переделает» все это, но в таблице по-прежнему есть только старые столбцы (или я так предполагаю, поскольку я получаю сообщение об ошибке при попытке доступа к таблице с использованием моей модели).
Тогда я полагаю, что могу получить прямой доступ к базе данных и таким образом удалить таблицы. Однако я не знаю, как получить доступ «in» к базе данных, где я могу выполнять команды. Ввод sqlite3 из командной строки не распознается. Я также попробовал «python manage.py sql my_site», но я снова получаю сообщение о том, что sqlite3 не распознан.
Предложения?
Комментарии:
1. Я предполагаю, что вы размещаете в неправильной категории, пожалуйста, укажите, какую ОС вы используете, а также Django не воссоздает / изменяет таблицу при втором запуске syncDB
Ответ №1:
Сначала вы должны установить инструмент командной строки для sqlite. В Ubuntu / Debian вы можете просто сделать
sudo apt-get install sqlite3
В Windows вы можете загрузить его отсюда:http://www.sqlite.org/download.html. Найдите тот, который выглядит как sqlite-shell-win32-xxx.zip .
Используйте это следующим образом:
> sqlite3 /path/to/your/database
;show some help
.help
; list all databases
.databases
; clear the contents of a table
DELETE FROM <tablename>;
Смотрите также ссылку на командную строку:http://www.sqlite.org/sqlite.html
и ссылка на SQL sqlite:http://www.sqlite.org/lang.html.
Используя SQL-команду «ALTER TABLE», вы также можете добавлять столбцы, не удаляя все содержимое таблицы. Для этого сравните выходные данные .schema в sqlite3 и выходные данные manage.py sql my_site
, чтобы выяснить, какие столбцы вам нужно добавить.
Пример:
ALTER TABLE "buildreport_series" ADD COLUMN "parameters" text
Ответ №2:
Используйте встроенный в Django инструмент управления базами данных:
python manage.py dbshell
И выполните необходимые команды sql. sql
Команда будет печатать в stdout только то, какой sql требуется для создания текущих таблиц (как определено текущими моделями).