使用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/
人们还推荐南( 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上正常工作。
- 可能会在数据库中保留一些旧表