使用Django中的manage.py从CLI中清除数据库最简单的方法是什么?

我正在使用Django来build立一个网站与MySQL。 现在,我正在学习,所以我需要经常更改模型,所以我希望所有的表都被清除,新的表被创build。

syncdb不会触及现有的表格。 有没有更好的方法来处理这个问题?

如果你不关心数据:

最好的办法是放弃数据库并再次运行syncdb 。 或者你可以运行:

对于Django> = 1.5

 python manage.py flush 

对于Django <1.5

 python manage.py reset appname 

(可以在命令末尾添加--no-input ,以便跳过交互提示。)

如果你关心数据:

从文档:

syncdb只会为尚未安装的模型创build表格。 它永远不会发出ALTER TABLE语句来匹配安装后对模型类所做的更改。 模型类和数据库模式的变化通常会涉及某种forms的模糊性,在这种情况下,Django将不得不猜测正确的变化。 关键数据在这个过程中可能会丢失。

如果您对模型进行了更改并希望修改数据库表以进行匹配,请使用sql命令来显示新的SQL结构,并将其与现有表模式进行比较以计算出更改。

https://docs.djangoproject.com/en/dev/ref/django-admin/

参考:常见问题 – https://docs.djangoproject.com/en/dev/faq/models/#if-i-make-changes-to-a-model-how-do-i-update-the-database

人们还推荐南( http://south.aeracode.org/docs/about.html#key-features ),但我还没有尝试过。

使用Django扩展 ,运行:

 ./manage.py reset_db 

将清除数据库表,然后运行:

 ./manage.py syncdb 

将重新创build他们(南方可能会要求你移植的东西)。

最快(删除并创build包括数据的所有表格):

 ./manage.py reset appname | ./manage.py dbshell 

警告:

  • 可能无法在Windows上正常工作。
  • 可能会在数据库中保留一些旧表