如何在 Django 1.6 和 sqlite 2.8 中使用迁移工具?

How to use a migration tool in Django 1.6 and sqlite 2.8?

我是 Django 和一般数据库的新手。我制作了一个新应用程序,然后在其模型中添加了 class。之后我在我的 class 中添加了另一件事,并且我 运行 这个命令 "python3.2 manage.py sql todo"。我得到了这个

CREATE TABLE "todo_item" (
"id" integer NOT NULL PRIMARY KEY,
"description" text NOT NULL,
"dueDate" date NOT NULL,
"status" varchar(20) NOT NULL
);
COMMIT;

我以为这样就可以了,但我仍然收到这个错误:

Exception Value: no such column: todo_item.status

状态是我想添加到我的项目中的新东西 class。

manage.py sql todo 只是打印 SQL 来创建 table。此 SQL 未针对数据库执行。

要创建 table 你应该 运行 manage.py syncdb.

但我建议您使用提供真正迁移的 South 应用程序。

UPDATE:要将新列添加到现有的空 table 运行 以下命令:

echo "ALTER TABLE todo_item ADD COLUMN status VARCHAR(20) NOT NULL;" | python manage.py dbshell

如果 table 不为空且您无法从中删除数据,则必须为该列设置默认值:

echo "ALTER TABLE todo_item ADD COLUMN status VARCHAR(20) NOT NULL DEFAULT 'new';" | python manage.py dbshell