在jupyter中使用时无法保存到数据库
PierXuY opened this issue · comments
在jupyter中使用时,再次连接同一个数据库,数据会丢失(貌似是没有写入到数据库文件)。
确实如此,当写入的数据大小没有达到db.MAX_BUFFER_SIZE
时,数据依旧在内存中的,因此如果期望jupyter 中(或在python进程没有结束之前) 即时写入磁盘,比较方便的方式是手动触发.write_immediately()
方法:
db = dictdb('./test_db')
db[(1, 2, 3)] = [1, 2, 3]
db.write_immediately()
也可以通过设置db.MAX_BUFFER_SIZE=1
对每一次数据更新都进行磁盘写入(写入性能很高,不必过于担心);
或是通过设置自动保存的时间间隔db._COMMIT_TIME_INTERVAL
(单位:秒)对内存中的缓存数据进行定期磁盘写入。
但是在.py文件中执行相同的程序时,就没有这个问题,写入的数据大小是一样的。 是不是还存在别的原因?
是会在py文件执行完毕,退出程序前执行写出操作吗? 而jupyter文件没有这一过程
是会在py文件执行完毕,退出程序前执行写出操作吗? 而jupyter文件没有这一过程
没错
明白了,谢谢! 那在jupyter里手动执行下db.write_immediately()也是合理的,或许在README里可以说明下。
This issue is stale because it has been open for 30 days with no activity.
在版本v0.2.3
之后加入了写入监控,即在触发更新数据的相关操作后都会尽快写入,这意味着即使在jupyter中也不必再手动执行db.write_immediately()
了。