sqlite3
首先,最開始遇到一個問題,就是刪除了內容,但是文件大小沒有變化。我以爲是因爲刪的內容太小了…但是後來發現不管刪除多少文件大小都不會變化。
在網上查了一下發現是因爲他就是不會釋放空間的。需要執行一條指令:
cursor.execute('VACUUM')
接着,因爲要用到rowid
,需要刪掉某些rowid
的數據,所以就要考慮rowid
到底會不會變化。網上查到的結果是,我刪掉某一條數據之後,是不會影響它後面的數據的rowid
值的,只是刪掉的那條數據內容沒有了,僅此而已,所有rowid
沒有任何變化。
但是我的數據庫明明清理過好多次數據,我測試發現rowid
和我數據條數是對應的,這就很奇怪了。
突然想到可能是因爲我執行了那條釋放空間的指令。
然後測試了一下沒有執行那條指令時候的備份數據庫。發現,rowid
都一萬多了,而實際數據只有6000多,so~~就是這個原因。
要想讓rowid
和實際數據的序號對應的話,可以執行cursor.execute('VACUUM')
,讓你的數據庫裏面沒有未被使用的空間,就ok了。
這樣我也可以放心刪數據了。