从先前终止的数据库连接提交 SQLite 中的现有日志文件

bob*_*ago 6 python database sqlite commit journal

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

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

connection = sqlite3.connect('mydatabase')

connection.commit()
Run Code Online (Sandbox Code Playgroud)

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

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

CL.*_*CL. 5

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

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