sjite真空与django

时间:2012-07-09 03:00:54

标签: python django sqlite vacuum

插入并删除批量记录到sqlite之后,sqlite db文件的大小不断增长,有没有办法用django真空表?

  • 让sqlite自动清空的一些设置
  • 或手动将自己的django命令写入真空

更新:

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

vacuum [my table];
commit;

效果很好,我只想按程序方式进行操作

1 个答案:

答案 0 :(得分:3)

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