Django flush与sqlclear&syncdb的区别

25

有人能告诉我这两者有何区别吗?

>manage.py flush  # or reset

以及

>manage.py sqlclear appname | python manage.py dbshell
>manage.py syncdb 

https://docs.djangoproject.com/en/dev/ref/django-admin/ - cetver
2个回答

20

flush会清空(删除数据)

sqlclear会删除表(包括其中的数据)

=> 如果您修改了数据库结构,则必须使用sqlclear(但最好使用South

更新:

South已被弃用。

从Django 1.7版本开始,迁移已内置到核心中。如果您正在运行旧版本,则可以使用South


https://docs.djangoproject.com/en/1.5/ref/django-admin/#sqlclear-appname-appname 说:“打印给定应用程序名称的DROP TABLE SQL语句。”。在我看来,它实际上并没有删除表。 - peetasan
阅读“将打印删除语句”。然后请参考 OP 的问题,以了解如何实际应用这些语句。 - lajarre

5
官方文档,涉及it技术相关内容:

flush

flushsqlclear

Flush在整个数据库上执行SQL Drops,sqlflush只打印出flush实际运行的SQL(同样在整个数据库上)。sqlclear打印出特定应用程序或多个应用程序的SQL Drops。flush和sqlflush/dbshell/syncdb都会安装fixtures。


1
通过运行sqlflush,看起来flush只会截断表而不是删除它们。 - Bobo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接