Python持久性重新理解pickle模块

  • 持久性

    持久性,就是指保持对象。

    假定有一个 Python 程序,它可能是一个管理日常待办事项的程序,您希望在多次执行这个程序之间可以保存应用程序对象(待办事项)。

    换句话说,您希望将对象存储在磁盘上,便于以后检索。这就是持久性。

    持久性有多种方案:

  • 讲数据对象存储在某种格式的文本文件中

    比如存在csv文件、关系数据库(MySQL…)。

    这些存储机制都有一个共同点:存储的数据是独立于对这些数据进行操作的对象和程序。

    • 好处是,数据可以作为共享的资源,供其它应用程序使用;
    • 缺点是,用这种方式,可以允许其它程序访问对象的数据,这违背了面向对象的封装性原则 ——即对象的数据只能通过这个对象自身的公共(public)接口来访问

    除去上述底层优缺点,关系型数据库还存在阻碍性不匹配(impedence-mismatch)问题,因为数据库的底层结构是固定的,而需要被存储的数据类型可能与之不匹配。

    简而言之,此类持久性方法,存在数据类型转换的过程。

  • 对象持久性

    如果希望透明地存储 Python 对象,而不丢失其身份类型等信息,则需要某种形式的对象序列化它是一个将任意复杂的对象转成对象的文本或二进制表示的过程

    同样,必须能够将对象经过序列化后的形式恢复到原有的对象。在 Python 中,这种序列化过程称为 pickle,可以将对象 pickle 成字符串、磁盘上的文件或者任何类似于文件的对象,也可以将这些字符串、文件或任何类似于文件的对象 unpickle 成原来的对象。

    除了pickle之外,还有ZODBPrevaylerPython版本PyPerSyst

  • picklecPickle

    import cPickle as pickle # cPickle是pickle的C版本
    

    pickle模块主要使用4个函数:pickle.dump()pickle.load()pickle.dumps()pickle.loads()

  • pickle.dump()存储到本地(序列化操作)
    data = 'something with type'
    with open('pickle_file.pickle', 'wb') as file:
        pickle.dump(data, file)
        
    
  • pickle.load()载入程序(反序列化操作)
    with open('pickle_file.pickle', 'rb') as file:
        df = pickle.load(file)
    
  • References

  1. python pickle模块

  2. Python pickle

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值