【发布时间】:2013-08-01 07:30:29
【问题描述】:
我正在开发一个使用 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。我测试了其中的真空语句,并且 ROWID 得到了更新。那么罪魁祸首可能是版本吗?还是可能是 pysqlite 的错误?
提前感谢您的任何想法或建议!
【问题讨论】:
-
它只说“可能会改变”。
-
@JanneKarila 感谢您的回复。那么“可能”是否意味着实际实现会因版本而异?或者即使对于相同的版本,行为也是不可预测的?
-
@JanneKarila 我已经用最新的 sqlite(3.7.17) 对其进行了测试。 ROWID 也不会更新。所以我认为我的第一个假设是有道理的。如果是这种情况,您是否知道是否有任何方法可以强制更新 ROWID 以使其始终连续?谢谢。