sqlite3的一个小知识点

sqlite3

首先,最开始遇到一个问题,就是删除了内容,但是文件大小没有变化。我以为是因为删的内容太小了…但是后来发现不管删除多少文件大小都不会变化。

在网上查了一下发现是因为他就是不会释放空间的。需要执行一条指令:

cursor.execute('VACUUM')

接着,因为要用到rowid,需要删掉某些rowid的数据,所以就要考虑rowid到底会不会变化。网上查到的结果是,我删掉某一条数据之后,是不会影响它后面的数据的rowid值的,只是删掉的那条数据内容没有了,仅此而已,所有rowid没有任何变化。

但是我的数据库明明清理过好多次数据,我测试发现rowid和我数据条数是对应的,这就很奇怪了。

突然想到可能是因为我执行了那条释放空间的指令。

然后测试了一下没有执行那条指令时候的备份数据库。发现,rowid都一万多了,而实际数据只有6000多,so~~就是这个原因。

要想让rowid和实际数据的序号对应的话,可以执行cursor.execute('VACUUM'),让你的数据库里面没有未被使用的空间,就ok了。

这样我也可以放心删数据了。

你可能感兴趣的:(水滴石穿)