Python 使用Django中的manage.py从CLI清除数据库的最简单方法是什么?
我正在使用Django用MySQL建立一个网站。现在,随着我的学习,我需要经常更改模型,以便清除所有表并创建新表Python 使用Django中的manage.py从CLI清除数据库的最简单方法是什么?,python,mysql,django,django-1.3,Python,Mysql,Django,Django 1.3,我正在使用Django用MySQL建立一个网站。现在,随着我的学习,我需要经常更改模型,以便清除所有表并创建新表 但是syncdb不涉及现有的表。有没有更好的方法来处理此问题?如果您不关心数据: 最好的方法是删除数据库并再次运行syncdb。或者您可以运行: 对于Django>=1.5 python manage.py flush 对于Django
但是
syncdb
不涉及现有的表。有没有更好的方法来处理此问题?如果您不关心数据:
最好的方法是删除数据库并再次运行syncdb
。或者您可以运行:
对于Django>=1.5
python manage.py flush
对于Django<1.5
python manage.py reset appname
(您可以在命令末尾添加--no input
,使其跳过交互式提示。)
如果您确实关心数据:
从文档中:
syncdb将仅为创建表
尚未发布的模型
安装。它永远不会发行
表语句以匹配所做的更改
安装后,将其复制到模型类。
对模型类和数据库的更改
模式通常涉及某种形式的
模棱两可,在这种情况下,还有Django
你必须猜出正确的答案
要做的更改。存在这样一种风险:
关键数据将在存储过程中丢失
过程
如果对模型进行了更改
并希望更改数据库表
要匹配,请使用sql命令
显示新的SQL结构和
将其与现有表进行比较
模式来计算更改
参考:常见问题-
人们也推荐South(),但我没有尝试过。最快(删除并创建所有表,包括数据):
警告:
- 可能无法在Windows上正常工作
- 可能会在数据库中保留一些旧表
./manage.py reset_db
将清除数据库表,然后运行:
./manage.py syncdb
将重新创建它们(south可能会要求您迁移东西)。我认为Django明确提到,如果目的是再次从空数据库开始(这似乎是OP的目的),那么只需删除并重新创建数据库,然后重新运行migrate
(而不是使用flush
):
如果您希望从一个空数据库开始并重新运行所有
迁移时,应删除并重新创建数据库,然后运行
而是迁移
对于OP的情况,我们只需要:
python manage.py migrate
您可以使用Django Truncate库删除表的所有数据,而不破坏表结构 例如:
pip安装django truncate
settings.py
文件中已安装的_应用程序中:python manage.py truncate--apps app_name--models table_name
reset
已运行SQL,因此无需通过管道连接到dbshell
。如果使用sqlreset
命令,则只需打印出SQL,您可以通过管道将其发送到shell执行,但这是一个不必要的步骤。South非常适合自动处理迁移。需要一点时间来适应,但它可以在开发过程中省去大量删除和重新创建数据库的麻烦,而且一旦您的站点处于活动状态,并且您需要在数据库中有宝贵数据的情况下更改数据库结构时,它将是一个必备工具。RESET命令已折旧。在Django 1.5中,命令已更新为flush
。尝试使用python manage.py flush
或python manage.py flush--noinput
跳过交互式提示。South已被弃用。参考您在这里给出的链接已断开。根据@becko的命令,该命令现在似乎是django admin flush
:pip安装django扩展
./manage.py syncdb
INSTALLED_APPS = [
...
'django_truncate',
]