【问题标题】:Delete object from Django sqlite3 database, reducing the database size [duplicate]从Django sqlite3数据库中删除对象,减少数据库大小[重复]
【发布时间】:2018-07-21 23:29:27
【问题描述】:

我有一张包含许多条目的表格。我可以很容易地“删除”这些条目,这样它们在使用 Django 管理页面时就不再出现了。但是,这些记录仍在 .sqlite3 文件中。由于我的删除,我想减小 .sqlite3 文件的大小。

到目前为止,Google 搜索对该主题毫无结果。

** 编辑 **

这不应被标记为重复。虽然之前已经以其他形式提出过这个问题,但它们都不是专门为通过 Django 实例使用 sqlite3 而定制的。

【问题讨论】:

  • 如何删除这些条目?如果您最终通过.delete() 方法删除它们,它们不应该再在数据库文件中了。
  • 他们还在那里。我在 Shell 中使用了 .delete(),并通过管理界面删除了
  • 删除运行sqlite3 /path/to/foo.db 'VACUUM;' 的实例后会减小大小

标签: python django database sqlite


【解决方案1】:

以下方法对我有用...

python3 manage.py shell
>>> from OpenBench.models import Result
>>> r = Result.objects.filter()
>>> r._raw_delete(r.db)
>>>
>>> from django.db import connection
>>> cursor = connection.cursor()
>>> cursor.execute("vacuum;")
>>> quit()

这将删除所有 Result 条目,并减小数据库文件的大小。

【讨论】:

  • 由于多种原因对我不起作用。错别字,外键约束错误。最后真空不起作用,光标用于错误的数据库类型。
  • cursor.exectute 应该是cursor.execute
猜你喜欢
  • 2020-06-02
  • 2013-01-07
  • 2016-09-05
  • 1970-01-01
  • 2018-01-31
  • 1970-01-01
  • 2018-04-09
  • 2010-09-28
  • 1970-01-01
相关资源
最近更新 更多