使用python sqlite3模块后,为什么在VACUUM之后没有更新ROWID?

时间:2013-08-01 07:30:29

标签: python sqlite pysqlite

我正在开发一个使用python sqlite3模块的应用程序。我的数据库使用sqlite3提供的隐式ROWID列。我希望在删除一些行并清空数据库后重新排序ROWID。因为在sqlite3官方文档中:

  

VACUUM命令可能会更改任何表中条目的ROWID   没有明确的INTEGER PRIMARY KEY。

我的pysqlite版本为2.6.0,sqlite版本为3.5.9。任何人都可以告诉我它为什么不起作用?使用真空时我应该注意什么?

P.S。我安装了一个独立的sqlite,其版本为3.3.6。我在其中测试了vacuum语句,并且ROWID已经更新。罪魁祸首可能是版本吗?或者它可能是pysqlite的错误?

提前感谢任何想法或建议!

1 个答案:

答案 0 :(得分:0)

此行为取决于版本。

如果您想要保证重新排序,则必须自己将所有记录复制到新表中。 (这适用于隐式和显式ROWID。)