6

我正在制作一个脚本,该脚本创建具有四天时间限制的大型 SQLite 数据库。在脚本完成之前达到时间限制并且将执行 connection.commit() 命令。脚本被删除,数据库连接终止,但日志仍在创建数据库的文件目录中。

我想提交现有的日志,看看当前的脚本是否在正确的轨道上。最初我只是尝试(使用 iPython 上的 Python sqlite3 模块):

connection = sqlite3.connect('mydatabase')

connection.commit()

但我怀疑我需要指定我要提交现有的期刊。我尝试在 commit() 中将日志名称作为参数传递,但 commit() 在 sqlite3 Python 模块中不接受参数。

将来我会逐步增加 .commit()

4

1 回答 1

5

当 SQLite 更改数据库时,一些新数据在 SQLite 的缓存中,其他新数据是否已写入磁盘。当 SQLite 在事务中被杀死时,缓存中的所有数据都已丢失,因此数据库的状态将不一致。在这种情况下,唯一的选择是回滚事务以恢复到一致状态。

-journal文件实际上包含数据,数据已写入实际的 DB 文件。如果你真的想看到你的部分事务所做的更改,你可以尝试删除-journal文件(这会阻止 SQLite 自动回滚)然后打开数据库,但是数据库的状态是不一致的,所以很可能您将无法访问所有数据。

于 2012-11-07T08:27:25.797 回答