有没有Django命令可以:
A. 删除所有表
B. 删除所有表中的所有数据
C. 根据模型定义创建所有表?
我现在找不到这些命令!
我指的是那些像……的小东西。
runserver
等等
有没有Django命令可以:
A. 删除所有表
B. 删除所有表中的所有数据
C. 根据模型定义创建所有表?
我现在找不到这些命令!
我指的是那些像……的小东西。
runserver
等等
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/
但是,您应该一定要了解并使用像 South 这样的工具来管理数据库。
N.B: 自Django 1.7起,syncdb
已被弃用,应使用迁移(migrate)。
manage.py sqlclear
是无法起作用的。您需要逐个传递每个应用程序名称,如果使用 syncdb
,它不会反映现有模型中的任何更改(这就是为什么建议使用 south 的原因)。 - Burhan Khalidsyncdb
已被弃用,建议使用migrate
命令。 - Jonathan Hartleymanage.py sqlclear
和manage.py reset
都不能一次性删除所有表,它们都需要一个appname
参数。
你应该看一下Django扩展,它提供了manage.py reset_db
以及许多其他有用的管理命令。
我建议使用django-south。它不仅可以在添加字段时将模型与数据库同步,还可以在删除字段/模型时同步。我发现它是构建Django网站的必要组件. 一旦安装,你可以运行像这样的命令:
./manage.py migrate app zero
你可以在这里了解更多: http://south.aeracode.org/docs/about.html
对于Django 1.5+,有一个更简单的一行代码来删除所有表格:
python2 manage.py sqlflush | sed 's/TRUNCATE/DROP TABLE/g'| python2 manage.py dbshell
python manage.py sqlclear appname
请注意给出的命令,然后运行它们。
python manage.py dbshell
逐行添加第一步给出的命令。完成后,输入'.exit'(对于SQlite3)。重新同步您的数据库,然后你就可以正常使用了。为了确保,使用以下命令检查表格:
python manage.py shell
>>> from yourapp import yourclasses
>>> yourviews.objects.all()
A 意味着 B,对吧?
关于 A,请参见 Django 中如何使用 manage.py CLI 删除数据库中的所有表格?
关于 C,
python manage.py syncdb