永久存储模块-qt教学大纲

时间:2021-06-04 01:59:48
【文件属性】:
文件名称:永久存储模块-qt教学大纲
文件大小:5.26MB
文件格式:PDF
更新时间:2021-06-04 01:59:48
python 核心编程 中文版 高清文字版 9.9 永久存储模块 在本书的很多练习里, 都需要用户输入数据. 这可能需要用户多次输入重复的数据. 尤其是如 果你要输入大批数据供以后使用时, 你肯定会厌烦这样做. 这就是永久储存大显身手的地方了, 它 可以把用户的数据归档保存起来供以后使用, 这样你就可以避免每次输入同样的信息. 在简单的磁 盘文件已经不能满足你的需要, 而使用完整的关系数据库管理系统(relational database management systems 即 RDBMS) 又有些大材小用时, 简单的永久性储存就可以发挥它的作用. 大部 分永久性储存模块是用来储存字符串数据的, 但是也有方法来归档 Python 对象. 9.9.1 pickle 和 marshal 模块 Python 提供了许多可以实现 小化永久性储存的模块. 其中的一组( marshal 和 pickle )可 以用来转换并储存 Python 对象. 该过程将比基本类型复杂的对象转换为一个二进制数据集合, 这样就可以把数据集合保存起来或通过网络发送, 然后再重新把数据集合恢复原来的对象格式. 这个过程也被称为数据的扁平化, 数据的序列化, 或者数据的顺序化. 另外一些模块 (dbhash/bsddb, dbm, gdbm, dumbdbm 等)以及它们的"管理器"( anydbm )只提供了 Python 字 符串的永久性储存. 而 后一个模块( shelve ) 则两种功能都具备. 我们已经提到 marshal 和 pickle 模块都可以对 Python 对象进行储存转换. 这些模块本身 并没有提供"永久性储存"的功能, 因为它们没有为对象提供名称空间, 也没有提供对永久性储存对 象的并发写入访问( concurrent write access ). 它们只能储存转换 Python 对象, 为保存和传输 提供方便. 数据储存是有次序的(对象的储存和传输是一个接一个进行的). marshal 和 pickle 模 块的区别在于 marshal 只能处理简单的 Python 对象(数字, 序列, 映射, 以及代码对象), 而 pickle 还可以处理递归对象, 被不同地方多次引用的对象, 以及用户定义的类和实例. pickle 模 块还有一个增强的版本叫 cPickle , 使用 C 实现了相关的功能. 9.9.2 DBM 风格的模块 *db* 系列的模块使用传统的 DBM 格式写入数据, Python 提供了 DBM 的多种实现: dbhash/bsddb, dbm, gdbm, 以及 dumbdbm 等. 你可以随便按照你的爱好使用, 如果你不确定 的话, 那么 好使用 anydbm 模块, 它会自动检测系统上已安装的 DBM 兼容模块, 并选择" 好"

网友评论