我正在制作一个脚本,该脚本可以创建具有四天时间限制的大型SQLite数据库。在脚本完成和执行connection.commit()命令之前已达到时间限制。脚本被删除,数据库连接终止,但是日志仍位于创建数据库的文件目录中。
我想提交现有日志,以查看当前脚本是否在正确的轨道上。最初,我只是尝试(在iPython上使用Python sqlite3模块):
connection = sqlite3.connect('mydatabase')
connection.commit()
但是我怀疑我需要指定要提交现有日志。我尝试将日记帐名称作为参数传递给commit(),但commit()在sqlite3 Python模块中不接受参数。
将来我会逐步.commit()
最佳答案
当SQLite更改数据库时,SQLite的缓存中将包含一些新数据,其他新数据是否已写入磁盘。
当SQLite在事务中间被杀死时,缓存中的所有数据都将丢失,因此数据库状态将不一致。在这种情况下,唯一的选择是回滚事务以使其恢复一致状态。-journal
文件实际上包含旧数据,新数据已写入实际的DB文件中。
如果您确实希望查看部分事务所做的更改,则可以尝试删除-journal
文件(这会阻止SQLite自动回滚),然后打开数据库,但是数据库的状态不一致,因此可能您将无法访问所有数据。