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文本数据处理学习笔记详解

    python文本数据处理学习笔记详解

    这篇文章主要为大家详细介绍了python文本数据处理学习笔记,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • python2.7读取文件夹下所有文件名称及内容的方法

    python2.7读取文件夹下所有文件名称及内容的方法

    python,本身来说是一门高级编程语言,python它入门简单,有基础的学起来很快就能有简单的应用,但是在非常高的抽象计算中,高级的python程序设计也是非常难学的。接下来给大家介绍python2.7读取文件夹下所有文件名称及内容的方法,一起看看吧
    2018-02-02
  • 零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers

    零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers

    文章首先介绍了urllib2的2个方法,然后详细介绍了urllib2中的2个重要概念Openers和Handlers的相关知识,希望能对大家有所帮助
    2014-11-11
  • 使用python绘制随机地形地图

    使用python绘制随机地形地图

    Python 作为一门功能强大的编程语言,在地图生成方面有着丰富的资源和库,本文将介绍如何使用 Python 中的一些工具和库来绘制随机地形地图,感兴趣的小伙伴可以跟着小编一起来看看
    2024-04-04
  • 对python中字典keys,values,items的使用详解

    对python中字典keys,values,items的使用详解

    今天小编就为大家分享一篇对python中字典keys,values,items的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 利用python制作俄罗斯方块详细图文教程

    利用python制作俄罗斯方块详细图文教程

    俄罗斯方块是一款经典的游戏,它可以用多种编程语言来实现,这篇文章主要给大家介绍了关于利用python制作俄罗斯方块的详细图文教程,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Python 实现王者荣耀中的敏感词过滤示例

    Python 实现王者荣耀中的敏感词过滤示例

    今天小编就为大家分享一篇Python 实现王者荣耀中的敏感词过滤示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python 实现上传图片并预览的3种方法(推荐)

    python 实现上传图片并预览的3种方法(推荐)

    下面小编就为大家带来一篇python 实现上传图片并预览的3种方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • python 文件与目录操作

    python 文件与目录操作

    可以使用简单的方法匹配某个目录下的所有子目录或文件,用法也很简单。
    2008-12-12
  • pycharm找不到conda可执行文件怎么解决

    pycharm找不到conda可执行文件怎么解决

    这篇文章主要给大家介绍了关于pycharm找不到conda可执行文件怎么解决的相关资料,文中通过图文介绍非常的详细,对大家的学习或者工作具有一的参考学习价值,需要的朋友可以参考下
    2023-07-07

最新评论