34

有没有 django 命令

A. 删除所有表

B.删除所有表中的所有数据

C. 创建模型中定义的所有表?

我现在找不到这些!

我所说的命令是指那些像

runserver

ETC

4

7 回答 7

39

A. 删除所有表

manage.py sqlclear将打印 sql 语句以删除所有表

B.删除所有表中的所有数据

manage.py flush将数据库返回到它在 syncdb 执行后立即所处的状态

C. 创建模型中定义的所有表?

manage.py syncdb为 INSTALLED_APPS 中尚未创建表的所有应用程序创建数据库表。

请参阅此页面以获取所有命令的参考:https ://docs.djangoproject.com/en/dev/ref/django-admin/

但是您绝对应该像已经提到的那样考虑使用南。这是管理数据库的最佳方式。

注意:syncdb从 Django 1.7 开始,不推荐使用 migrate。

于 2012-05-15T18:11:57.653 回答
14

如果您为数据库安装了客户端库,则可以运行以下命令:

python manage.py sqlflush | python manage.py dbshell

这不会删除表,但会截断它们。

没有一个命令可以一次性完成所有操作,但是这个“一个班轮”将删除所有表,然后重新创建它们。仅当您在一个在 shell 中提供这些实用程序的系统上运行时,它才会起作用。

echo 'from django.conf import settings; print settings.INSTALLED_APPS; quit();' | python manage.py shell --plain 2>&1 | tail -n1 | sed -r "s|^.*\((.*)\).*$|\1|; s|[',]| |g; s|django\.contrib\.||g" | xargs python manage.py sqlclear | python manage.py dbshell && python manage.py syncdb

于 2012-05-15T19:41:48.060 回答
10

既不manage.py sqlclear也不能manage.py reset一次删除所有表,两者都需要一个appname参数。

你应该看看Django Extensions,它可以让你访问manage.py reset_db以及许多其他有用的管理命令。

于 2012-10-15T11:58:50.550 回答
4

我建议使用 django-south。它不仅允许您在添加字段时将模型同步到数据库,还允许您在删除字段/模型时同步您的模型。我真的发现它是构建 Django 站点的重要组成部分。安装后,您可以运行如下命令:

./manage.py 迁移应用程序零

您可以在这里了解更多信息:http: //south.aeracode.org/docs/about.html

于 2012-05-15T17:43:39.597 回答
4

还有一个更简单的 oneliner 来删除 django 1.5+ 的所有表:

python2 manage.py sqlflush | sed 's/TRUNCATE/DROP TABLE/g'| python2 manage.py dbshell
于 2013-12-31T20:30:52.793 回答
2

我能够放下我的桌子。跑

python manage.py sqlclear appname

记下给出的命令。然后运行

python manage.py dbshell

添加第一步中给出的命令。逐行。完成后,输入“.exit”(对于 SQlite3)。重新同步您的数据库,您应该一切顺利。可以肯定的是,请检查以下表格:

python manage.py shell
>>> from yourapp import yourclasses
>>> yourviews.objects.all()

它应该返回一个 []。我希望这有帮助。

于 2012-08-06T08:27:35.633 回答
0

A暗示B,对吧?

对于 A,请参阅如何在 Django 中使用 manage.py CLI 从数据库中删除所有表?

对于 C,

python manage.py syncdb

当然,对于智能数据迁移,我使用@bento 提到的内容:django-south

于 2012-05-15T17:45:50.930 回答