sqlite3的一個小知識點

sqlite3

首先,最開始遇到一個問題,就是刪除了內容,但是文件大小沒有變化。我以爲是因爲刪的內容太小了…但是後來發現不管刪除多少文件大小都不會變化。

在網上查了一下發現是因爲他就是不會釋放空間的。需要執行一條指令:

cursor.execute('VACUUM')

接着,因爲要用到rowid,需要刪掉某些rowid的數據,所以就要考慮rowid到底會不會變化。網上查到的結果是,我刪掉某一條數據之後,是不會影響它後面的數據的rowid值的,只是刪掉的那條數據內容沒有了,僅此而已,所有rowid沒有任何變化。

但是我的數據庫明明清理過好多次數據,我測試發現rowid和我數據條數是對應的,這就很奇怪了。

突然想到可能是因爲我執行了那條釋放空間的指令。

然後測試了一下沒有執行那條指令時候的備份數據庫。發現,rowid都一萬多了,而實際數據只有6000多,so~~就是這個原因。

要想讓rowid和實際數據的序號對應的話,可以執行cursor.execute('VACUUM'),讓你的數據庫裏面沒有未被使用的空間,就ok了。

這樣我也可以放心刪數據了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章