原来Python内置了一个微型数据库,超实用!!!

更多精彩的Python文章请关注微信公众号:愤怒的it男

一、简单介绍

Python标准库提供了一个dbm模块。它允许用户使用键值对存储和检索数据,工作原理类似于字典,但不同之处在于它将数据存储在磁盘上,而不是在内存中。这使得它适用于需要持久化存储数据的情况,即使程序关闭后,数据仍然会保留。

dbm模块相当于一个微型数据库。当你需要存储的数据关系简单,并且需要持久化存储,那么强烈推荐使用dbm模块,简单又实用。

二、CRUD操作

使用dbm模块非常简单,可以在程序中直接导入它,然后创建或打开一个数据库文件即可做CRUD(创建,读取,更新,删除)操作。

1、创建(Create)

import dbm# 打开一个数据库,如果数据库不存在,则创建一个新的数据库
with dbm.open('miniDataBase', 'c') as db:# 创建数据db['chinese_name'] = '微信公众号:愤怒的it男'# 创建数据(key不存在时自动写进,key存在时则忽略)db.setdefault('english_name', '微信公众号:angry_it_man')# 关闭数据库db.close()

2、读取(Retrieve)

import dbmwith dbm.open('miniDataBase', 'c') as db:db['chinese_name'] = '微信公众号:愤怒的it男'db.setdefault('english_name', '微信公众号:angry_it_man')# 读取数据(如果key不存在则会抛出keyerror异常)print(db['chinese_name'].decode('utf-8'))# 读取数据(如果key不存在则会返回None或者第二个参数)print(db.get('welcome', '欢迎关注我的微信公众号:愤怒的it男'))db.close()

3、更新(Update)

import dbmwith dbm.open('miniDataBase', 'c') as db:db['chinese_name'] = '微信公众号:愤怒的it男'db.setdefault('english_name', '微信公众号:angry_it_man')# 更新数据db['english_name'] = 'WeChat_Account: english_name'db.close()

4、删除(Delete)

import dbmwith dbm.open('miniDataBase', 'c') as db:db['chinese_name'] = '微信公众号:愤怒的it男'db.setdefault('english_name', '微信公众号:angry_it_man')# 删除数据del db['english_name']db.close()

5、其他的一些操作

import dbmwith dbm.open('miniDataBase', 'c') as db:db['chinese_name'] = '微信公众号:愤怒的it男'db.setdefault('english_name', '微信公众号:angry_it_man')# 判断属于哪种数据库,包括dbm.gnu, dbm.ndbm 和 dbm.dumb三种print(dbm.whichdb("miniDataBase"))# 判断一个key是否存在,key可以是字符串或bytes对象print("chinese_name" in db, "welcome" in db)# 遍历数据库中的所有键值for key in db.keys():print(key.decode('utf-8'))# 遍历数据库中的所有键值对for key, value in db.items():print(key.decode('utf-8'), value.decode('utf-8'))db.close()

三、dbm的特点

总的来说,dbm具有如下特点:

  • 简单快速:非常简单易用,读取和写入操作都很快,适合存储少量数据。
  • 键值对存储:数据是以键值对形式存储的,你可以像操作Python字典一样。
  • 文件存储:数据存在具体的文件中,可以轻松地备份和转移。
  • 不支持复杂查询:如果需要执行复杂查询或需要关系型数据库的功能,dbm可能不是一个好选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/152218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义歌曲试听SeekBar

看到这个效果,可能会想到完全自定义一个控件,其实我们在系统Seekbar的基础上,将progressDrawable中progress背景设为透明后,叠加绘制试听状态下的进度区域即可 class PlayerSeekBar JvmOverloads constructor(context: Context,a…

一个基本的http客户端

高可用 客户端 1. httpClient.h #include <iostream> #include <string> #include <functional>class HttpClient { public:HttpClient(std::string url) : url_(url), port_(0) {}int write_http(const std::string &method, const std::string &…

等级保护建设全流程

等保&#xff0c;全称为信息安全等级保护&#xff0c;是对信息和信息载体按照重要性等级分级进行保护的一种工作。 企业的信息系统有收集、储存用户信息的&#xff0c;都需要进行等保建设&#xff0c;以此来整改提升系统的安全防护能力&#xff0c;降低被攻击的风险。若不然一旦…

全志R128内存泄漏调试案例

内存泄露调试案例 问题背景 硬件&#xff1a;R128 软件&#xff1a;FreeRTOS rtplayer_test(Cedarx) AudioSystem 问题复现 复现步骤&#xff1a; rtplayer_test /data/boot.mp3串口输入"l", 循环播放串口输入"b" , 播放器后台执行 具体表现 rtpla…

Re50:读论文 Large Language Models Struggle to Learn Long-Tail Knowledge

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;Large Language Models Struggle to Learn Long-Tail Knowledge ArXiv网址&#xff1a;https://arxiv.org/abs/2211.08411 官方GitHub项目&#xff08;代码和实体&#xff09;&#xf…

找不到msvcp110.dll怎么办,msvcp110.dll丢失的修复方法

您可能已经碰见过这样的情况&#xff0c;当您试图打开某个软件时&#xff0c;屏幕上突然跳出一个提示窗口&#xff0c;告诉您 “找不到msvcp110.dll”&#xff0c;“msvcp110.dll丢失”。遇到这种情况是不是让人很焦头烂额呀&#xff1f;别担心&#xff0c;接下来我就为您提供几…

【EI会议征稿】第三届能源利用与自动化国际学术会议(ICEUA 2024)

第三届能源利用与自动化国际学术会议&#xff08;ICEUA 2024&#xff09; 2024 3rd International Conference on Energy Utilization and Automation (ICEUA 2024) 2024年第三届能源利用与自动化国际学术会议&#xff08;ICEUA 2024&#xff09;将于2024年3月15-17日在中国武汉…

C++ 调用 Lua 函数

零、前言 Lua 作为一门脚本语言&#xff0c;可以作为 “配置文件”、“动态逻辑脚本” 等角色作用于宿主程序。 因为他是一门语言&#xff0c;所以他有以下的好处&#xff1a; 1. Lua 会处理语法细节&#xff0c;后续维护简单&#xff0c;并且可以有注释。 2. 可以编写逻辑&…

IDEA 快捷键汇总

目录 1、altinsert 2、ctrl/ 3、altenter 4、alt回车 5、ctrlD 6、ctrlaltL 7、ctrl点击 8、alt左键向下拉 9、ctrlaltv 10、ctrlaltwint 1、altinsert 快速创建代码&#xff0c;可以快速创建类中get set tostring等方法 2、ctrl/ 单行注释 3、altenter…

水库大坝安全监测系统守护水利工程安全的坚实后盾

WX-WY1 随着社会经济的发展和科技的进步&#xff0c;水利工程的安全问题越来越受到人们的关注。水库大坝作为水利工程的重要组成部分&#xff0c;其安全状况直接关系到周边地区人民的生命财产安全和生态环境。因此&#xff0c;建立一个高效、可靠的水库大坝安全监测系统至关重要…

update_engine-FilesystemVerifierAction和PostinstallRunnerAction

在介绍完了DownloadAction之后&#xff0c;还剩下FilesystemVerifierAction和PostinstallRunnerAction&#xff0c;下面开始对其进行分析。 FilesystemVerifierAction 在数据下载完成后&#xff0c;在DownloadAction中会切换到FilesystemVerifierAction void DownloadAction:…

特效!视频里的特效在哪制作——Adobe After Effects

今天&#xff0c;我们来谈谈一款在Adobe系列中推出的一款图形视频处理软件&#xff0c;适用于从事设计和视频特技的机构&#xff0c;包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室的属于层类型后期软件——Adobe After Effects。 Adobe After Effects&#xf…

PostgreSQL设置主键从1开始自增

和MySQL不同&#xff0c;在 PostgreSQL 中&#xff0c;设置主键从1开始自增并重新开始自增是通过序列&#xff08;sequence&#xff09;来实现的。以下是步骤&#xff1a; 步骤1&#xff1a;创建一个序列 CREATE SEQUENCE your_table_id_seqSTART 1INCREMENT 1MINVALUE 1MAXV…

qt槽函数的四种写法

槽函数的四种写法 一,Qt4写法 不推荐这种写法,如果SLGNAL写错了,或者信号名字,槽函数名字写错了.编译器检查不出来,导致程序无响应,引起不必要的误解 connect(ui.btnOpen,SLGNAL(clicked),this,SLOT(open()));二,Qt5写法 推荐使用这种写法&#xff0c;信号名字、槽函数名字…

Docker build报错总结,版本过新大避雷!

1.速度太慢报错&#xff0c;需要换源&#xff1b; 在DOCKERFILE中添加镜像&#xff1b; RUN echo "deb http://mirror.sjtu.edu.cn/debian bookworm main non-free contrib" > /etc/apt/sources.list&#xff0c; 2.即使在Dockerfile中换源&#xff0c;但在bul…

Java 中四种引用类型

Java 中有四种引用类型&#xff0c;分别是强引用、软引用、弱引用和虚引用。这四种引用类型在 Java 虚拟机中对对象的内存管理起着重要作用。以下是这四种引用类型的含义和区别&#xff1a; 强引用&#xff08;Strong Reference&#xff09;&#xff1a; 强引用是 Java 中最常…

gitlab利用CI多工程持续构建

搭建CI的过程中有多个工程的时候&#xff0c;一个完美的构建过程往往是子工程上的更新(push 或者是merge)触发父工程的构建&#xff0c;这就需要如下建立一个downstream pipeline 子仓库1 .gitlab-ci.yml stages:- buildbuild_job:stage: buildtrigger:project: test_user/tes…

Flutter笔记:目录与文件存储以及在Flutter中的使用(下)

Flutter笔记 目录与文件存储以及在Flutter中的使用&#xff08;下&#xff09; 文件读写与Flutter中文件管理 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;…

-bash: jps: command not found

背景 服务器的jdk通过yum 安装的&#xff0c;要用jps查询pid&#xff0c;提示找不到命令 yum install -y java-1.8.0-openjdk.x86_64 一、jps命令无法找到 [devhgh-tob-hsbc-dev-003 ~]$ jps -bash: jps: command not found 二、检查基础Java环境 [devhgh-tob-hsbc-dev-003 ~]…

计算机是如何工作的(简单介绍)

目录 一、冯诺依曼体系 二、CPU基本流程工作 逻辑⻔ 电⼦开关——机械继电器(Mechanical Relay) ⻔电路(Gate Circuit) 算术逻辑单元 ALU&#xff08;Arithmetic & Logic Unit&#xff09; 算术单元(ArithmeticUnit) 逻辑单元(Logic Unit) ALU 符号 寄存器(Regis…