Django sqlite - как изменить схему - PullRequest
2 голосов
/ 01 мая 2011

Я внес изменения в свой файл model.py в Django, и теперь я хочу синхронизировать эти изменения.Это нормально, чтобы удалить таблицы и воссоздать их.Тем не менее, кажется, ничего не работает.Я использую sqlite3:

syncdb: работает только в первый раз, а не с изменениями

"python manage.py sql my_site", за которым следует syncdb: я думал, что это "переделает" все это,но таблица по-прежнему содержит только старые столбцы (или, как я полагаю, я получаю сообщение об ошибке, когда пытаюсь получить доступ к таблице с помощью моей модели).

Затем я понимаю, что могу получить прямой доступ к базе данных и удалитьтаблицы таким образом.Однако я не знаю, как попасть в БД, где я могу выполнять команды.Ввод sqlite3 из командной строки не распознается.Я также попробовал "python manage.py sql my_site", но я снова получаю сообщение, что sqlite3 не распознан.

Предложения?

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Сначала вы должны установить инструмент командной строки для 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 SQL: http://www.sqlite.org/lang.html.

С помощью команды sql «ALTER TABLE» вы также можете добавлять столбцы, не удаляя все содержимое таблицы. Для этого сравните выходные данные .schema в sqlite3 и выходные данные manage.py sql my_site, чтобы выяснить, какие столбцы нужно добавить.

Пример:

ALTER TABLE "buildreport_series" ADD COLUMN "parameters" text
0 голосов
/ 05 апреля 2014

Используйте встроенный в Django инструмент управления базами данных:

python manage.py dbshell

И введите необходимые команды sql. Команда sql будет выводить в stdout только то, что требуется для создания текущих таблиц sql (как определено текущими моделями).

...