sqlite 真空与 django

Posted

技术标签:

【中文标题】sqlite 真空与 django【英文标题】:sqlite vacuum with django 【发布时间】:2012-07-09 03:00:54 【问题描述】:

在sqlite中插入和删除大量记录后,sqlite db文件的大小一直在增长,有没有办法使用django清理表?

一些让 sqlite 自动清空的设置 或手动编写自己的 django 命令来清理

更新:

我使用sqlite database browser 执行以下SQL:

vacuum [my table];
commit;

效果很好,我只是想用程序的方式来做

【问题讨论】:

【参考方案1】:

您可以按如下方式执行原始 sql:

from django.db import connection, transaction
cursor = connection.cursor()

# Data modifying operation - commit required
cursor.execute("vacuum my_table")
transaction.commit_unless_managed()

不过,这很有趣http://www.sqlite.org/lang_vacuum.html/pragma.html#pragma_auto_vacuum

也许我们可以将 vacumm 设置为自动,但看起来它可能会加剧碎片化。

cursor.execute("PRAGMA auto_vacuum=FULL")

http://www.sqlite.org/pragma.html#pragma_auto_vacuum

【讨论】:

非常感谢,虽然我认为 django 模型元数据中的一些设置,但问题得到了解决 使用 Django 1.8.3 它需要transaction.commit()

以上是关于sqlite 真空与 django的主要内容,如果未能解决你的问题,请参考以下文章

Django django_admin_log' 不存在

新美坚分享真空包装袋成型工艺

真空三极管:发明历史和物理工作原理

DjangoDjango 如何使用 Django设置的日志?

Djangodjango配置信息

电气专业知识问答 问:真空断路器结构及运行特点是什么?