社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

可升级的PICKLE模块(Python Recipe)

Python程序员 • 8 年前 • 636 次点击  

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