如何擦除Django中的表数据?

时间:2015-12-04 08:22:28

标签: python django

我写了一个简单的脚本来填充用Django模型创建的表。我确实在开发过程中犯了错误,并且我的表中的数据已损坏(它可以访问,但有错误的图像,名称,URL)。我想删除这些数据并开始填充,但如果我只使用pk=1,它看起来像表存储以前的主键(因此新对象不会从Model.objects.all().delete()开始)。

如何在没有DROP TABLE的情况下删除所有以前的数据?如果DROP是最方便的方式,那么这个Django : Table doesn't exist恢复解决方案是唯一的解决方案吗?

所需的功能是在每个脚本运行之前自动擦除数据。提前谢谢。

3 个答案:

答案 0 :(得分:2)

您可以使用flush

  

从数据库中删除所有数据并重新执行任何后同步处理程序。已应用迁移的表格未清除。

通过manage.py flush

致电
  

有没有办法只为表集使用flush,而不是数据库?

不,不是真的。 Flush有一个选项可以指定您正在刷新的数据库(-database),但是您无法指定某些表,因为这可能会破坏表之间的关系,从而使数据无效。

如果你真的需要这样做,你当然可以创建自己的命令,只是通过表并删除对象,但这当然不会执行刷新的post-synchronization步骤

答案 1 :(得分:0)

有一种方法可以只删除给定django应用程序的表而不是整个数据库:您可以使用dbshell并将其传递给python manage.py sqlclear app_name | python manage.py dbshell 管理命令。

list-style-type: devanagari;

仅当应用程序没有迁移时才能应用该命令。请参阅here更多信息。

答案 2 :(得分:0)

在使用loaddata将数据回传到测试环境之前,我还需要一种清除特定表的方法。这适用于特定的表:

echo "delete from my_table" | python manage.py dbshell