python shelve模块_python shelve模块

本文介绍了Python中的shelve、json和pickle模块在数据持久化中的应用。shelve提供了一个简单的key-value存储,适合保存Python对象;json模块用于将Python数据转换为JSON格式,便于交换和存储;pickle模块则用于将Python对象转换为二进制,方便存储和读取。示例展示了各个模块的方法用法,并比较了它们之间的区别。
摘要由CSDN通过智能技术生成

import shelve

import datetime

d = shelve.open('shelve_test')

'''写入文件'''

info = {'age': 22, 'job': 'IT'}

name = ['Jack', 'Rose']

d['name'] = name

d['info'] = info

d['data'] = datetime.datetime.now()

d.close()

'''读取文件'''

d = shelve.open('shelve_test')

print(d.get('name'))

print(d.get('info'))

print(d.get('date'))

d.close()

shelve类似于一个key-value数据库,可以很方便的用来保存Python的内存对象,其内部使用pickle来序列化数据,简单来说,使用者可以将一个列表、字典、或者用户自定义的类实例保存到shelve中,下次需要用的时候直接取出来,就是一个Python内存对象,不需要像传统数据库一样,先取出数据,然后用这些数据重新构造一遍所需要的对象。

可以看出shelve模块和json对文件的操作是很像的,但是保存文件时有三个文件,如图:

具体不用管这三个文件的格式,正常的读写就行了。

模块名称描述提供的api

json

用于实现Python数据类型与通用(json)字符串之间的转换

dumps()、dump()、loads()、load()

pickle

用于实现Python数据类型与Python特定二进制格式之间的转换

dumps()、dump()、loads()、load()

shelve

专门用于将Python数据类型的持久化到磁盘,shelf是一个类似dict的对象,操作十分便捷

open()

json模块:

下面通过一些示例来学习:

首先我们来看json的dumps和loads方法

1

2

3

4

5

6

s1={"k1":"v1"}

st=json.dumps(s1)

print(st,type(st))

s='{"k1":"v1"}'

dic=json.loads(s)

print(dic,type(dic))

输出结果为:

1

2

{"k1":"v1"}

{'k1':'v1'}

可以看出json的dumps方法处理数据时会将数据转换为字符类型,loads则会重新还原它的类型。

再来看json的dump和load方法,通过示例来了解:

1

2

3

4

li=[11,22,33]

li=json.dump(li,open('db','w'))

li=json.load(open('db','r'))

print(li,type(li))

即Json的load要接open的文件对象,dump同理。

Json模块dumps、loads、load、dump的区别:

load,dump可加载外部文件,处理文件的数据,dumps,loads主要处理内存中的数据

pickle模块:

下面我们来看pickle的dumps和loads方法,通过示例我们来了解:

1

2

3

4

5

6

import pickle

i=[11,22,33]

r=pickle.dumps(li)

print(r)

result=pickle.loads(r)

print(result)

结果为:

1

2

b'\x80\x03]q\x00(K\x0bK\x16K!e.'

[11,22,33]

pickle的dupms方法会将数据存为pickle特有的数据类型

再看pickle的dump和load方法,通过示例我们来了解:

1

2

3

4

5

import pickle

i=[11,22,33]

pickle.dump(i,open('db','wb'))

result=pickle.load(open('db','rb'))

print(result)

需要注意的是dump文件或者load文件是需要使用二进制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值