2012-07-09 55 views
1

插入和刪除大量記錄到sqlite後,sqlite數據庫文件的大小不斷增長,有什麼辦法使用django真空表?sqlite真空與Django

  • 一些設置,讓sqlite的自動真空
  • 或手工編寫自己的Django命令真空

更新時間:

我用sqlite database browser執行SQL語句:

vacuum [my table]; 
commit; 

它工作的很好,我只是想做它的程序方式

回答

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

+0

千恩萬謝,但我想在Django模型的一些設置的元數據,但問題得到有效解決 – pinkdawn 2012-07-09 05:15:27

+0

使用Django 1.8.3,它需要'''器transaction.commit()''' – 2016-08-24 09:51:20