Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django 1.6和sqlite 2.8中使用迁移工具?_Python_Django_Sqlite_Django Models - Fatal编程技术网

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

Python 如何在Django 1.6和sqlite 2.8中使用迁移工具?,python,django,sqlite,django-models,Python,Django,Sqlite,Django Models,我对Django和数据库都是新手。我制作了一个新的应用程序,然后在其模型中添加了一个类。之后,我向类中添加了另一个东西,并运行了这个命令“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 NUL

我对Django和数据库都是新手。我制作了一个新的应用程序,然后在其模型中添加了一个类。之后,我向类中添加了另一个东西,并运行了这个命令“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

状态是我想添加到item类中的新内容

manage.py sql todo
只打印sql以创建表。不针对数据库执行此SQL

要创建表,应运行
manage.py syncdb

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

更新:要将新列添加到现有空表中,请运行以下命令:

echo "ALTER TABLE todo_item ADD COLUMN status VARCHAR(20) NOT NULL;" | python manage.py dbshell
如果表不是空的,并且无法从中删除数据,则必须为该列设置默认值:

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

manage.py sql todo
只打印sql以创建表。不针对数据库执行此SQL

要创建表,应运行
manage.py syncdb

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

更新:要将新列添加到现有空表中,请运行以下命令:

echo "ALTER TABLE todo_item ADD COLUMN status VARCHAR(20) NOT NULL;" | python manage.py dbshell
如果表不是空的,并且无法从中删除数据,则必须为该列设置默认值:

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

您是否运行了
manage.py syncdb
?您是否运行了
manage.py syncdb
?此外,您还可以转到内置迁移系统的django 1.7。当然。如果OP可以选择版本,那么切换到1.7是正确的选择。@卡塔瓦兰感谢您的评论,很遗憾,我不得不使用1.6,因为它是用于学校项目。如果表已经存在,那么
syncdb
什么也不做。此命令不会更改表。请参阅更新后的答案。当然,您也可以转到django 1.7,它内置了迁移系统。如果OP可以选择版本,那么切换到1.7是正确的选择。@卡塔瓦兰感谢您的评论,很遗憾,我不得不使用1.6,因为它是用于学校项目。如果表已经存在,那么
syncdb
什么也不做。此命令不会更改表。请参阅更新的答案。