8.1. 数据持久化和数据交换 | 数据持久和数据交换 |《python 3 标准库实例教程》| python 技术论坛-金年会app官方网

未匹配的标注

保存数据以供长期使用有两个方面:在内存和存储格式间来回转换数据,以及处理转换后的数据存储。标准库有各种模块可以在不同的情形处理这两方面。

有两个模块可以转换对象为传输或存储的格式(称为序列化)。持久化方面最常见的是 ,因为它与其它实际存储序列化数据的标准库模块集成,比如 shelve。而 json 更常用于 web 应用,因为它与现有的 web 服务存储工具集成得更好。

将内存对象转换成可以保存的格式后,下一步就是如何存储数据。一个简单的文件可以存放顺序写入的序列化对象,它们不需要任何索引。python 有一系列模块,可以在需要索引查找时以 dbm 形式在简单数据库中存储键值对。

利用 dbm 格式最直接的方法是 。打开 shelve 文件,通过类似字典的 api 访问。保存到数据库中的对象将自动被挑选和保存,不需要调用方其它额外的工作。

shelve 有一个缺点,在使用默认接口时,无法预测哪种 dbm 格式将被使用,因为它会根据创建数据库的系统上可用的依赖库来选择。如果应用不需要在具有不同依赖库的主机之间共享数据库文件,这个格式就不重要,但如果需要可移植性,请使用模块中的类来确保选择特定的格式。

对于已经通过 json 使用数据的 web 应用, 和  提供了另一种持久化机制。直接使用  比 shelve 需要多一点工作,因为 dbm 数据库中键和值必须是字符串,并且值在访问时不会自动重新创建。

大多数发行版都带有进程中的关系数据库  用于存储比键值对更复杂的数据,其数据库存储在内存或本地文件中,所有访问都来自同一进程,因而没有网络通信延迟。sqlite3 的紧凑特性使得它特别适合在桌面应用或 web 应用开发中使用。

为了同使用其他语言编写的应用程序进行数据交换,python 还提供了一些用于解析更为「正式」的数据格式的模块。  可以解析 xml 文档,并为不同应用程序提供多种操作方式。除此之外, elementtree 还可以将内存中的对象序列化为 xml 文档,并进行格式化输出。  可以对逗号分隔值( comma separated value , csv )文件进行读写。这种文件内容大多为表格数据,一般由电子表格或数据库程序生成。我们可以使用 csv 模块批量加载数据,或进行数据格式转换操作。

本文章首发在 金年会app官方网 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 cc 协议,如果我们的工作有侵犯到您的权益,请及时联系金年会app官方网。

原文地址:https://learnku.com/docs/pymotw/data-per...

译文地址:https://learnku.com/docs/pymotw/data-per...

上一篇 下一篇
贡献者:1
讨论数量: 0



暂无话题~
网站地图