Python DBM模块轻松使用小型数据库存储管理数据

 更新时间:2024年01月19日 09:59:50   作者:数据小郑  
这篇文章主要介绍了Python DBM模块轻松使用小型数据库存储管理数据,它可以让你轻松地存储和管理键值对数据,可以使用 dbm 模块来操作 DBM 文件,或者使用 shelve 模块来存储任意类型的 Python 对象

Python dbm模块

Python 是一门非常强大和灵活的编程语言,它拥有丰富的标准库,提供了各种各样的功能和工具。其中,有一个模块可能很多人不太熟悉,那就是 dbm 模块。dbm 模块其实是一个接口,它可以让你使用 Python 自带的小型数据库,也就是 DBM 文件系统。

DBM(DataBase Manager)是一种文件系统,专门用于键值对的存储,最初是在 Unix 平台实现,现在其它平台也可以用。对于 KV 模型,DBM 提供了一个轻量级、高效的存储解决方案。总的来说,DBM 具有如下特点:

简单快速:非常简单易用,读取和写入操作都很快,适合存储少量数据。

键值对存储:数据是以键值对形式存储的,你可以像操作 Python 字典一样。

文件存储:数据存在具体的文件中,可以轻松地备份和转移。

不支持复杂查询:如果需要执行复杂查询或需要关系型数据库的功能,DBM 可能不是一个好选择。

而 Python 标准库提供了一个 dbm 模块,它实现了 DBM 文件系统的功能,本文来看一下它的用法和拓展应用。

如何使用dmb模块

要使用 dbm 模块,首先需要导入它:

import dbm

然后,可以使用 dbm.open(filename, flag) 函数来打开一个 DBM 文件,或者创建一个新的 DBM 文件。

filename 参数是想要打开或者创建的 DBM 文件的名称,flag 参数是想要以什么模式打开或者创建 DBM 文件,它可以是以下几种值:

'r':只读模式,如果文件不存在,会抛出异常。

'w':读写模式,如果文件不存在,会创建一个新文件。

'c':读写模式,如果文件不存在,会创建一个新文件。

'n':读写模式,如果文件存在,会覆盖原来的内容,如果文件不存在,会创建一个新文件。

打开 DBM 文件后,可以像操作字典一样,使用 db[key] = value 来存储数据,或者使用 value = db[key] 来读取数据。也可以使用 db.keys() 来获取所有的键,或者使用 db.values() 来获取所有的值。还可以使用 db.close() 来关闭文件,或者使用 with 语句来自动关闭文件。

初级案例应用

下面是一个简单的示例,展示了如何使用 dbm 模块来存储和读取一些学生的成绩信息:

import dbm
# 创建一个新的 DBM 文件,存储一些学生的成绩
with dbm.open('scores.db', 'n') as db:
db['Alice'] = '90'
db['Bob'] = '80'
db['Charlie'] = '85'
# 打开已有的 DBM 文件,读取一些学生的成绩
with dbm.open('scores.db', 'r') as db:
print(db['Alice']) # 输出 90
print(db['Bob']) # 输出 80
print(db['Charlie']) # 输出 85
print(db.keys()) # 输出 [b'Alice', b'Bob', b'Charlie']
print(db.values()) # 输出 [b'90', b'80', b'85']

需要注意的是,DBM 文件只能存储字符串或者字节类型的数据,如果想存储其他类型的数据,比如数字、列表、字典等,需要先将它们转换成字符串或者字节类型,然后再存储。

可以使用 str.encode() 和 str.decode() 函数来进行转换,或者使用 pickle 模块来进行序列化和反序列化。

进阶案例应用

如果觉得 dbm 模块的功能还不够强大,或者想存储更复杂的 Python 对象,可以使用 shelve 模块。

shelve 模块是一个基于 dbm 模块的高级接口,它可以存储任意类型的 Python 对象,而不需要进行转换或者序列化。shelve 模块的用法和 dbm 模块非常类似:

只需要用 shelve.open(filename, flag) 来打开一个 DBM 文件,然后就可以像操作字典一样,使用 db[key] = value 来存储数据,或者使用 value = db[key] 来读取数据。

下面是一个简单的示例,展示了如何使用 shelve 模块来存储和读取一些学生的信息,包括姓名、年龄和成绩:

import shelve
# 创建一个新的 DBM 文件,存储一些学生的信息
with shelve.open('students.db', 'n') as db:
db['Alice'] = {'name': 'Alice', 'age': 18, 'score': 90}
db['Bob'] = {'name': 'Bob', 'age': 19, 'score': 80}
db['Charlie'] = {'name': 'Charlie', 'age': 20, 'score': 85}
# 打开已有的 DBM 文件,读取一些学生的信息
with shelve.open('students.db', 'r') as db:
print(db['Alice']) # 输出 {'name': 'Alice', 'age': 18, 'score': 90}
print(db['Bob']) # 输出 {'name': 'Bob', 'age': 19, 'score': 80}
print(db['Charlie']) # 输出 {'name': 'Charlie', 'age': 20, 'score': 85}
print(db.keys()) # 输出 KeysView(<shelve.DbfilenameShelf object at 0x000001F8A5B9A4C0>)
print(db.values()) # 输出 ValuesView(<shelve.DbfilenameShelf object at 0x000001F8A5B9A4C0>)

可以看到,shelve 模块可以存储和读取复杂的 Python 对象,而不需要进行任何转换。

但是,shelve 模块也有一些限制,比如说,不能修改已经存储的对象的属性,只能重新赋值一个新的对象。

以上就是Python DBM模块轻松使用小型数据库存储管理数据的详细内容,更多关于Python DBM数据库存储管理的资料请关注脚本之家其它相关文章!

相关文章

  • Python ORM编程基础示例

    Python ORM编程基础示例

    这篇文章主要介绍了Python ORM编程基础,结合实例形式分析了Python ORM编程相关概念、原理以及缓存、数据库操作相关使用技巧,需要的朋友可以参考下
    2020-02-02
  • python光学仿真实现光线追迹折射与反射的实现

    python光学仿真实现光线追迹折射与反射的实现

    这篇文章主要为大家介绍了python光学仿真实现光线追迹折射与反射的实现示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • 使用python编写监听端

    使用python编写监听端

    这篇文章主要为大家详细介绍了使用python编写监听端,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • python3.5基于TCP实现文件传输

    python3.5基于TCP实现文件传输

    这篇文章主要为大家详细介绍了python3.5基于TCP实现文件传输的代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Django封装交互接口代码

    Django封装交互接口代码

    这篇文章主要介绍了Django封装交互接口代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 如何将DataFrame数据写入csv文件及读取

    如何将DataFrame数据写入csv文件及读取

    在Python中进行数据处理时,经常会用到CSV文件的读写操作,当需要将list数据保存到CSV文件时,可以使用内置的csv模块,若data是一个list,saveData函数能够将list中每个元素存储在CSV文件的一行,但需要注意的是,默认情况下读取出的CSV数据类型为str
    2024-09-09
  • ubuntu安装sublime3并配置python3环境的方法

    ubuntu安装sublime3并配置python3环境的方法

    这篇文章主要介绍了ubuntu安装sublime3并配置python3环境的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • python中return的返回和执行实例

    python中return的返回和执行实例

    今天小编就为大家分享一篇python中return的返回和执行实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 使用Python保护或加密Excel文件的7种方法

    使用Python保护或加密Excel文件的7种方法

    Excel文件通常包含敏感信息,如财务记录、客户数据或专有公式,保护和加密这些文件对于防止未经授权的访问和维护机密性至关重要,在本文中,我们将探讨如何使用Python自动化Excel文件的安全保护和加密过程,确保数据的安全性,需要的朋友可以参考下
    2025-02-02
  • Java与Python两大幸存者谁更胜一筹呢

    Java与Python两大幸存者谁更胜一筹呢

    Python起源于一种脚本语言,它的语法体现了一种可读性的理念,具有简单而规则的界限,鼓励简洁和一致的代码布局,而Java是一种面向对象语言,其吸引力和价值所在是其具有的可移植性和相对效率。下面通过本文了解下java python 谁更胜一筹
    2018-04-04

最新评论