Py学习  »  Python

可升级的PICKLE模块(Python Recipe)

Python程序员 • 6 年前 • 396 次点击  

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

到目前为止,Python中的Pickle模块是实现对象持久化的最简单的方法。在对象存储到提取的这段时间里,如果修改类,则会出现问题。当提取旧数据时,旧数据需要与新类代码配合。只要不添加新数据属性,这就不是问题。例如,添加一个只依赖旧数据的新方法则旧的pickle模块依然工作。

当然,如果添加了属性,旧的pickle文件将不能正确地配合新的类定义。

本recipe提供一个框架,用于编写可升级的类,支持向后兼容旧的pickle数据。

我在升级我的home-brew财务软件时发现了这种方法,它使用pickle文件在运行时存储帐户信息。当升级代码时,旧的pickle数据就不能用了。点对点的程序升级对于pickles模块来说看起来很容易出错。这个简单的解决方案提供了一个框架,以支持很多升级。

初始化对象时,当前的类版本号作为一个属性存储。当对象存储时存储此属性,并且提取对象时根据class_version验证。


英文原文:http://code.activestate.com/recipes/521901-upgradable-pickles/
译者:小雨

今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/bDCiL2g38Q
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3990
 
396 次点击