一、对象持久化
1.临时性对象:类创建的对象并不是真正的数据库记录,存储在内存而不是文件中,关闭python,实例将消失,比如说程序语句运行中所产生和得到的数据对象,在关掉python之后计算机就会给内存中保存的这些数据对象给释放掉。
2.对象持久化:就是说数据对象在创建它们的程序退出之后依然存在。
3. pickle模块:pickle模块可以对python的任意对象格式化和解格式化,所谓格式化就一种标准的格式,这种标准的格式就可以保存到某个文件中,解格式化就是说已经格式化后的一个数据包给恢复成原来的数据对象,就好比文件编码个解码的程序。
dbm模块:实现一个通过键(key)访问的文件系统,以存储字节串,是一个比较低层次的访问。
shelve模块:按照键把pickle处理后的对象存储到一个文件中,就是它是通过key的对应,把pickle模块处理之后的对象,给它存储到外层文件系统当中的一个文件里面去,它可以把这个文件当做一个类似于字典的容器来用,可以把数据对象从这个容器中提出来放进去等等一些处理。
二、构造数据库
1.shelve模块
提供基本的存储操作,通过构造一个简单的数据库,像操作字典一样按照键存储和获取本地的python对象,使其可以跨程序运行而保持持久化
1.1键:必须是字符串,且是唯一的
1.2值:任何类型的python对象
1.3shelve与字典的类型的区别:字典可以通过方括号或者dict指明类型的方法直接 创建然后进行操作,shelve它必须要有一个打开(open)的操作来打开shelve然后可以对它进行类似于字典的这种操作,最后还得对它进行关闭(close)的操作
1.4数据处理:不支持类似SQL的查询功能工具,支持这个键来存取,同时只要通过这个键能够获取到保存在文件当中的数据对象导入内存里头,它就可以像正常的数据对象一样做任意的操作。
1.5常用操作:基本语法如下图所示:
#1.将任何数据对象,保存到文件中去.open函数在调用时返回一个sheif对象,通过该对象可以存储内容
s = shelve.open(sgy2.py)
#2.类似于字典形式的访问,可读可写
s[key] = date
value = s[key]
del s[key]
#3.操作完成后关闭文件
s.close()
具体操作如下图所示:
>>> s = shelve.open('sgy2.py') #打开一个文件
>>> s['ss'] = 'hj' #类似于字典形式往里面添加类容
>>> value = s['kk']#读出'kk'值
>>> print(value)#输出‘kk’键的值
{'int': 10, 'float': 9.5, 'string': 'hunanlongshan'}
>>> del s['mm']#删除'mm'键对应的数据值
>>> s['ss'] = {'gequ':'dida dida dida'}#修改'ss'键的数据值
>>> s.close()#关闭并以文件的形式保存操作的数据对象