记录python中对象数据的持久化操作模块的学习

在 Python 中,有一些重要的模块用于实现对象数据的持久化

这里简单描述常用的俩个模块marshal和shelve

marshal 模块的优缺点:

优点:

  • marshal 模块提供了简单的函数来读写二进制对象和 Python 数值,适用于将简单的数据类型(如数字、字符串等)序列化到文件中或从文件中反序列化。

缺点:

  • marshal 模块不是通用的序列化/反序列化模块,它的设计目的是读写 .pyc 文件中的 Python 代码,不适合处理复杂的 Python 对象结构。
  • marshal 模块的序列化格式是特定于 Python 的,可能不兼容其他编程语言或系统。
  • marshal 模块在处理大数据量时可能效率较低。

代码示例

import marshal

data = {'key1': 1, 'key2': 2}

# 保存到文件
with open('data.pkl', 'wb') as f:
    marshal.dump(data, f)

# 从文件读取
with open('data.pkl', 'rb') as f:
    loaded_data = marshal.load(f)

print(loaded_data) 

shelve 模块的优缺点:

优点:

  • shelve 模块允许以类似操作字典的方式来处理持久化的数据,使得数据的存储和检索更加直观和方便。
  • shelve 模块可以逐个键值对地进行读写,而不需要一次性读取或写入整个数据集,适用于处理大型数据或需要频繁更新的数据。

缺点:

  • shelve 模块基于 pickle 模块进行序列化,因此也存在pickle 模块的一些局限性,如跨平台性差、不支持多线程并发访问等。
  • shelve 模块不适合存储非常大的数据量,因为它将所有数据存储在一个文件中,可能会导致文件过大且难以管理。

代码示例

import shelve

# 创建或打开一个 shelf
shelf = shelve.open('my_shelf.db')

# 存储对象
shelf['key1'] = [4, 5, 6]

# 关闭 shelf
shelf.close()

# 再次打开并获取对象
shelf = shelve.open('my_shelf.db')
retrieved_data = shelf['key1']
shelf.close()

仅供参考 如有问题欢迎指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值