2

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

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

更新:

我使用sqlite 数据库浏览器执行以下 SQL:

vacuum [my table];
commit;

效果很好,我只想以编程方式进行

4

1 回答 1

5

您可以按如下方式执行原始 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

于 2012-07-09T03:17:12.343 回答