Python 数据持久化

Python 数据持久化

      • [1.1 pickle ------ Python对象的序列化](#1.1 pickle —— Python对象的序列化)
      • 主要功能
      • 使用示例
      • [1.2 copyreg ------ 注册pickle支持函数](#1.2 copyreg —— 注册pickle支持函数)
      • 使用示例
      • [1.3 shelve ------ Python对象的持久化](#1.3 shelve —— Python对象的持久化)
      • 使用示例
      • [1.4 marshal ------ 内部使用的对象序列化](#1.4 marshal —— 内部使用的对象序列化)
      • 使用示例
      • [1.5 dbm ------ Unix数据库接口](#1.5 dbm —— Unix数据库接口)
      • 使用示例

1.1 pickle ------ Python对象的序列化

pickle模块用于将Python对象序列化为字节流,以便保存到文件或通过网络传输。

主要功能

  • pickle.dump(obj, file): 将对象序列化并保存到文件。
  • pickle.load(file): 从文件中加载并反序列化对象。

使用示例

python 复制代码
import pickle

# 保存对象
data = {'name': 'Alice', 'age': 30}
with open('data.pkl', 'wb') as f:
    pickle.dump(data, f)

# 加载对象
with open('data.pkl', 'rb') as f:
    loaded_data = pickle.load(f)
print(loaded_data)

1.2 copyreg ------ 注册pickle支持函数

copyreg模块用于自定义对象的序列化和反序列化方法。

使用示例

python 复制代码
import copyreg
import pickle

class MyClass:
    def __init__(self, name, value):
        self.name = name
        self.value = value

def pickle_myclass(obj):
    return MyClass, (obj.name, obj.value)

copyreg.pickle(MyClass, pickle_myclass)

obj = MyClass("example", 42)
with open("myclass.pkl", "wb") as f:
    pickle.dump(obj, f)

with open("myclass.pkl", "rb") as f:
    loaded_obj = pickle.load(f)
print(loaded_obj)

1.3 shelve ------ Python对象的持久化

shelve模块用于将Python对象持久化到磁盘。

使用示例

python 复制代码
import shelve

# 保存对象
data = {'name': 'Alice', 'age': 30}
with shelve.open('mydata.shelve') as shelf:
    shelf['user_info'] = data

# 加载对象
with shelve.open('mydata.shelve') as shelf:
    loaded_data = shelf['user_info']
print(loaded_data)

1.4 marshal ------ 内部使用的对象序列化

marshal模块用于Python内部对象的序列化,通常用于保存字节码。

使用示例

python 复制代码
import marshal

# 保存对象
data = {'name': 'Alice', 'age': 30}
with open('data.marshal', 'wb') as f:
    marshal.dump(data, f)

# 加载对象
with open('data.marshal', 'rb') as f:
    loaded_data = marshal.load(f)
print(loaded_data)

1.5 dbm ------ Unix数据库接口

dbm模块提供了对Unix数据库文件的接口,用于存储键值对。

使用示例

python 复制代码
import dbm

# 打开数据库
with dbm.open('mydbm', 'c') as db:
    # 保存数据
    db['name'] = 'Alice'
    db['age'] = '30'
    
    # 获取数据
    print(db['name'])  # Alice
    print(db['age'])   # 30

    # 删除键
    del db['city']
    
    # 获取所有键
    print(list(db.keys()))  # ['name', 'age']
相关推荐
爱隐身的官人26 分钟前
爬虫基础学习-爬取网页项目(二)
前端·爬虫·python·学习
小清兔2 小时前
c#基础知识
开发语言·数据库·学习·unity·c#·游戏引擎·.net
刘恒1234567892 小时前
Pycharm
ide·python·pycharm
奇某人4 小时前
【语法】【C+V】本身常用图表类型用法快查【CSDN不支持,VSCODE可用】
开发语言·vscode·markdown·mermaid
做一位快乐的码农4 小时前
php程序设计之基于PHP的手工艺品销售网站/基于php在线销售系统/基于php在线购物商城系统
开发语言·php
@珍惜一生@4 小时前
Qt开源库
开发语言·qt·开源
Slaughter信仰5 小时前
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第四章知识点问答补充及重新排版
java·开发语言·jvm
心灵宝贝5 小时前
Mac用户安装JDK 22完整流程(Intel版dmg文件安装指南附安装包下载)
java·开发语言·macos
今***b5 小时前
Python 操作 PPT 文件:从新手到高手的实战指南
java·python·powerpoint
secondyoung5 小时前
一文丝滑使用Markdown:从写作、绘图到转换为Word与PPT
开发语言·vscode·编辑器·powerpoint·markdown·visual studio·mermaid