总的来说,DBM 具有如下特点:
简单快速:非常简单易用,读取和写入操作都很快,适合存储少量数据。
键值对存储:数据是以键值对形式存储的,你可以像操作 Python/ target=_blank class=infotextkey>Python 字典一样。
文件存储:数据存在具体的文件中,可以轻松地备份和转移。
不支持复杂查询:如果需要执行复杂查询或需要关系型数据库的功能,DBM 可能不是一个好选择。
而 Python 标准库提供了一个 dbm 模块,它实现了 DBM 文件系统的功能,来看一下它的用法。
import dbm
# 第一个参数是文件名
# 第二个参数是模式,有以下几种
# r:只读,要求文件必须存在,默认就是这个模式
# w:可读可写,要求文件必须存在
# c:可读可写,文件不存在会创建,存在则追加
# n:可读可写,文件不存在会创建,存在则清空
# 第三个参数是权限,用八进制数字表示,默认 0o666,即可读可写不可执行
db = dbm.open("store", "c")
# 打开文件就可以存储值了,key 和 value 必须是字符串或 bytes 对象
db["name"] = "S せんせい"
db["age"] = "18"
db[b"corporation"] = "小摩".encode("utf-8")
# 关闭文件,将内容写到磁盘上
db.close()
非常简单,就像操作字典一样,并且 key 是唯一的,如果存在则替换。执行完后,当前目录会多出一个 store.db 文件。
我们打开它,然后读取刚才写入的键值对。
import dbm
db = dbm.open("store", "c")
# 获取所有的 key,直接返回一个列表
print(db.keys())
"""
[b'corporation', b'name', b'age']
"""
# 判断一个 key 是否存在,key 可以是字符串或 bytes 对象
print("name" in db, "NAME" in db)
"""
True False
"""
# 获取一个 key 对应的 value,得到的是 bytes 对象
print(db["name"].decode("utf-8"))
print(db[b"corporation"].decode("utf-8"))
"""
S せんせい
小摩
"""
# key 如果不存在,会抛出 KeyError,我们可以使用 get 方法
print(db.get("NAME", b"unknown"))
"""
b'unknown'
"""
# 当然也可以使用 setdefault 方法,key 不存在时,自动写进去
print(db.setdefault("gender", b"female"))
"""
b'female'
"""
print(db["gender"])
"""
b'female'
"""
非常简单,当你需要存储的数据量不适合放在内存中,但又没必要引入数据库,那么不妨试试使用 dbm 模块吧。
当然啦,dbm 虽然很方便,但它只能持久化 bytes 对象,字符串也是转成 bytes 对象之后再存储的。所以除了 dbm 之外,还有一个标准库模块 shelve,它可以持久化任意对象。
shelve 的使用方式和 dbm 几乎是一致的,区别就是 shelve 的序列化能力要更强,当然速度自然也就慢一些。
import shelve
# 第二个参数表示模式,默认是 c
# 因此文件不存在会创建,存在则追加
sh = shelve.open("shelve")
sh["name"] = ["S 老师", "高老师", "电烤
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
当使用 Plotly 进行数据可视化时,我们可以通过以下示例展示多种绘图方法,每个示例都会有详细的注释和说明。1.创建折线图import plotly.graph_objects as go# 示例1: 创建简单...【详细内容】
2024-04-01 Search:
Python
介绍本文将介绍如何使用openpyxl和pptx库来批量制作PPT奖状。本文假设你已经安装了python和这两个库。本文的场景是:一名基层人员,要给一次比赛活动获奖的500名选手制作奖状,并...【详细内容】
2024-03-26 Search:
Python
工厂模式是一种常见的设计模式,它可以帮助我们创建对象的过程更加灵活和可扩展。在Python中,我们可以使用函数和类来实现工厂模式。一、Python中实现工厂模式工厂模式是一种常...【详细内容】
2024-03-07 Search:
Python
Python的字典推导式是一种优雅而强大的工具,用于创建字典(dict)。这种方法不仅代码更加简洁,而且执行效率高。无论你是Python新手还是有经验的开发者,掌握字典推导式都将是你技能...【详细内容】
2024-02-22 Search:
Python
Python是一种高级编程语言,它具有简洁、易于理解和易于维护的特点。然而,代码重构和优化对于保持代码质量和性能至关重要。什么是代码重构?代码重构是指在不改变代码外部行为的...【详细内容】
2024-02-22 Search:
Python
在编写代码的过程中,括号几乎无处不在,以至于有时我们会拼命辨别哪个闭合括号与哪个开头的括号相匹配。这款插件能帮助解决这个众所周知的问题。前言在PyCharm中浏览插件列表...【详细内容】
2024-01-26 Search:
Python
Python中的graphlib库是一个功能强大且易于使用的工具。graphlib提供了许多功能,可以帮助您创建、操作和分析图形对象。本文将介绍graphlib库的主要用法,并提供一些示例代码和...【详细内容】
2024-01-26 Search:
Python
作者简介成学,携程高级安全研发工程师,关注Python/Golang后端开发、大语言模型等领域。一、背景2023年初,科技圈最火爆的话题莫过于大语言模型了,它是一种全新的聊天机器人模型,...【详细内容】
2024-01-26 Search:
Python
译者 | 李睿审校 | 重楼在当今竞争激烈的市场环境中,为了生存和发展,企业必须能够实时收集、处理和响应数据。无论是检测欺诈、个性化用户体验还是监控系统,现在都需要接近即时...【详细内容】
2024-01-26 Search:
Python
简单分布式爬虫结构主从模式是指由一台主机作为控制节点负责所有运行网络爬虫的主机进行管理,爬虫只需要从控制节点那里接收任务,并把新生成任务提交给控制节点就可以了,在这个...【详细内容】
2024-01-25 Search:
Python
▌简易百科推荐
当使用 Plotly 进行数据可视化时,我们可以通过以下示例展示多种绘图方法,每个示例都会有详细的注释和说明。1.创建折线图import plotly.graph_objects as go# 示例1: 创建简单...【详细内容】
2024-04-01 Python技术 Tags:Python
介绍本文将介绍如何使用openpyxl和pptx库来批量制作PPT奖状。本文假设你已经安装了python和这两个库。本文的场景是:一名基层人员,要给一次比赛活动获奖的500名选手制作奖状,并...【详细内容】
2024-03-26 Python技术 微信公众号 Tags:Python
工厂模式是一种常见的设计模式,它可以帮助我们创建对象的过程更加灵活和可扩展。在Python中,我们可以使用函数和类来实现工厂模式。一、Python中实现工厂模式工厂模式是一种常...【详细内容】
2024-03-07 Python都知道 微信公众号 Tags:Python
Python的字典推导式是一种优雅而强大的工具,用于创建字典(dict)。这种方法不仅代码更加简洁,而且执行效率高。无论你是Python新手还是有经验的开发者,掌握字典推导式都将是你技能...【详细内容】
2024-02-22 子午Python 微信公众号 Tags:Python技巧
Python是一种高级编程语言,它具有简洁、易于理解和易于维护的特点。然而,代码重构和优化对于保持代码质量和性能至关重要。什么是代码重构?代码重构是指在不改变代码外部行为的...【详细内容】
2024-02-22 编程技术汇 Tags:Python代码
在编写代码的过程中,括号几乎无处不在,以至于有时我们会拼命辨别哪个闭合括号与哪个开头的括号相匹配。这款插件能帮助解决这个众所周知的问题。前言在PyCharm中浏览插件列表...【详细内容】
2024-01-26 Python学研大本营 微信公众号 Tags:PyCharm插件
Python中的graphlib库是一个功能强大且易于使用的工具。graphlib提供了许多功能,可以帮助您创建、操作和分析图形对象。本文将介绍graphlib库的主要用法,并提供一些示例代码和...【详细内容】
2024-01-26 科学随想录 微信公众号 Tags:Graphlib库
简单分布式爬虫结构主从模式是指由一台主机作为控制节点负责所有运行网络爬虫的主机进行管理,爬虫只需要从控制节点那里接收任务,并把新生成任务提交给控制节点就可以了,在这个...【详细内容】
2024-01-25 大雷家吃饭 Tags:Python
Python是一门动态的、面向对象的脚本语言,同时也是一门简约,通俗易懂的编程语言。Python入门简单,代码可读性强,一段好的Python代码,阅读起来像是在读一篇外语文章。Python这种特...【详细内容】
2024-01-15 程序员不二 Tags:Python
Python语言作为一种高级编程语言,具有许多独特的特点和优势,这使得它在众多编程语言中脱颖而出。在本文中,我们将探讨Python语言的特点、应用场景以及与其他语言的对比优势。一...【详细内容】
2024-01-09 今日头条 Tags:Python语言
相关文章
- 解密 Python 如何调用 Rust 编译生成的动态
- 只会在终端使用Python运行代码?这些进阶用法
- 用Python替代Adobe,零成本从PDF提取数据
- 收藏这五个优秀Python库,事半功倍!
- Python GUI 编程:dearpygui 和 tkinter 的对
- 在Python中什么场景下应该使用多进程和多线
- 深入探索Python itertools库的五大常用方法
- Python中的协程,你知道怎么用吗
- Python Pandas数据预处理:你知道数据标准化
- 好用的Python解释器有哪些?
- 全面系统Python3.8入门+进阶
- Python是什么样的编程语言?有哪些特点?
- Python:打造可视化数据分析应用的实战指南!
- 提升Python编程体验:探索VS Code的无限可能
- Python的range函数内部是怎么实现的?
- Python编写注册机:生成卡密,轻松登录应用程序
- Python内置数据库:轻量级SQLite
- 六种方法教你将Python源代码打包成exe,快来
- 从零开始学习Python网络编程:探索TCP协议与
- 入门Pytest:优雅地进行Python测试
站内最新
栏目相关
· Python 可视化:Plotly 库使用基础
· Python 办公神器:教你使用 Python 批量制作 PPT
· Python实现工厂模式、抽象工厂,单例模式
· 不可不学的Python技巧:字典推导式使用全攻略
· 如何进行Python代码的代码重构和优化?
· Python开发者必备的八个PyCharm插件
· Python的Graphlib库,再也不用手敲图结构了
· Python分布式爬虫打造搜索引擎
· 使用Python进行数据分析,需要哪些步骤?
· Python语言的特点及应用场景, 同其它语言对比优势
· 五分钟内完成个性化Python GUI计算器搭建
· 突破Pytorch核心点,优化器 !!
· 突破Pytorch核心点,CNN !!!
· 什么是Python中的LEGB规则?
· 50 条实用的编写Python 程序建议
· python 爬虫常用第三方库推荐
· 使用 Python 连接 SQL Server 数据库并实时读取数据?
· Python 新手入门必学的20个开源库
· 每个程序员都应该知道的11个Python魔术方法
· Python打造可视化进度条
站内热门
- 从零开始教你安装Oracle数据库
- 一文看懂HMS Core到底是什么
- 什么是VPN
- 做网站渗透测试,可以从哪方面入手?
- 五胡十六国
- 国家划分的艰苦边远地区范围和类别,最全版,终
- SpringBoot事物Transaction实战讲解教程
- 行程码的创始人马晓东
- 电脑键盘不能打字了按哪个键恢复?
- 12306购票时,静、复、智 是什么意思?
- 最全的VPN远程访问内网服务器的设置教程来
- 什么是古法手镯,与普通手镯有什么区别,值得花
- 5款电视上安装的浏览器,你家是哪款?
- 5种方法,教你如何在手机和电脑之间传输文件
- 通过26个实例彻底掌握 linux find 命令的使
- 主板红色的usb接口是干嘛的?
- 教你4种方法检验黄金的纯度,建议收藏
- 天道酬勤、地道酬德、人道酬诚、商道酬信
- 关于警衔你了解多少?人民警察99式警衔详解
- Tik Tok国际版抖音,如何免翻墙、免拔卡使用?
相关头条
· Python是什么样的编程语言?有哪些特点?
· Python 技术书籍推荐,内附11个入门建议!
· 用Python实现答题卡识别!你学会了吗?
· 并行计算必看:这七个Python库
· 一文学会队列入门:Python数据结构与算法
· 最详细的Windows安装Python教程
· 到底该不该使用Python?
· Linux下Python安装配置指南
· 7个Python实战项目代码,让你分分钟晋级大神!
· 使用Streamlit快速搭建和共享交互式应用
· Pandas 28种常用方法使用总结
· 200 行 Python 代码实现一个极简 GPT
· 你必须知道的常用的足够简练的 11 个 Python代码
· 你是否知道如何使用Python PyQt6事件处理器?
· Python编程快速入门
· Python爬虫全网抓取知乎答案!
· 16 个必知必会的 Python 教程
· python将数字转化为中文1到9的两种方法
· 如何使用ChatGPT进行Python编程
· 八个流行的 Python 可视化工具包
站内头条
- 简易百科财经之CPI跟我们到底有啥关系?
- 简易百科财经:什么是CPI?
- 美联储加息对黄金价格的影响有多大?
- 简易百科之什么是掼蛋?
- 简易百科之什么是站群?
- 简易百科SEO之什么是文章洗稿?
- 简易百科:让百度快速收录文章的排版技巧
- 简易百科是个什么网站?
- 如何避免和女性聊天时尴尬?
- 减少隐私泄露微信需要关闭的功能
- 简易百科:怎样使用手机才能减少隐私泄露?
- 抖音小店店铺主体怎么变更?抖音店铺的营业执
- 简易百科:什么是虚拟现实与增强现实?
- 腾讯QQ浏览器工具权益卡上线PC端,每月最低6
- 拼手气分5亿!支付宝2024年“五福节”活动开
- 美国硅谷历史简介
- 广州放开120平方米以上户型限购 进一步支持
- 证监会今起全面暂停限售股出借 转融券市场
- 融券两新规如何影响A股?融券T+0可用改为T+1
- 中小主播"困"在合同里: 9万粉抖音主播签约M