当前位置:首页 > 科技  > 软件

你知道 Python 其实自带了小型数据库吗

来源: 责编: 时间:2023-11-01 17:04:33 467观看
导读dbmDBM(DataBase Manager)是一种文件系统,专门用于键值对的存储,最初是在 Unix 平台实现,现在其它平台也可以用。对于 KV 模型,DBM 提供了一个轻量级、高效的存储解决方案。总的来说,DBM 具有如下特点:简单快速:非常简单易用,读

dbm

7NV28资讯网——每日最新资讯28at.com

DBM(DataBase Manager)是一种文件系统,专门用于键值对的存储,最初是在 Unix 平台实现,现在其它平台也可以用。对于 KV 模型,DBM 提供了一个轻量级、高效的存储解决方案。7NV28资讯网——每日最新资讯28at.com

总的来说,DBM 具有如下特点:7NV28资讯网——每日最新资讯28at.com

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

而 Python 标准库提供了一个 dbm 模块,它实现了 DBM 文件系统的功能,来看一下它的用法。7NV28资讯网——每日最新资讯28at.com

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 文件。7NV28资讯网——每日最新资讯28at.com

图片图片7NV28资讯网——每日最新资讯28at.com

我们打开它,然后读取刚才写入的键值对。7NV28资讯网——每日最新资讯28at.com

import dbmdb = 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 模块吧。7NV28资讯网——每日最新资讯28at.com

当然啦,dbm 虽然很方便,但它只能持久化 bytes 对象,字符串也是转成 bytes 对象之后再存储的。所以除了 dbm 之外,还有一个标准库模块 shelve,它可以持久化任意对象。7NV28资讯网——每日最新资讯28at.com

shelve

shelve 的使用方式和 dbm 几乎是一致的,区别就是 shelve 的序列化能力要更强,当然速度自然也就慢一些。7NV28资讯网——每日最新资讯28at.com

import shelve# 第二个参数表示模式,默认是 c# 因此文件不存在会创建,存在则追加sh = shelve.open("shelve")sh["name"] = ["S 老师", "高老师", "电烤 
                

本文链接:http://www.28at.com/showinfo-26-16369-0.html你知道 Python 其实自带了小型数据库吗

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Go语言中的闭包:封装数据与功能的强大工具

下一篇: 一文了解负载均衡器、反向代理、API 网关区别

标签:
  • 热门焦点
  • 红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 6月iOS设备性能榜:M2稳居榜首 A系列只能等一手3nm来救

    没有新品发布,自然iOS设备性能榜的上榜设备就没有什么更替,仅仅只有跑分变化而产生的排名变动,毕竟苹果新品的发布节奏就是这样的,一年下来也就几个移动端新品,不会像安卓厂商,一
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • 微软邀请 Microsoft 365 商业用户,测试视频编辑器 Clipchamp

    8 月 1 日消息,微软近日宣布即将面向 Microsoft 365 商业用户,开放 Clipchamp 应用,邀请用户通过该应用来编辑视频。微软于 2021 年收购 Clipchamp,随后开始逐步整合到 Microsof
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了“本地生活”入口,位置较深,位于首页的“充值中心”内,目前主要售卖美食相关的
  • 10天营收超1亿美元,《星铁》比《原神》差在哪?

    来源:伯虎财经作者:陈平安即便你没玩过《原神》,你一定听说过的它的大名。恨它的人把《原神》开服那天称作是中国游戏史上最黑暗的一天,有粉丝因为索尼在PS平台上线《原神》,怒而
  • 苹果140W USB-C充电器:采用氮化镓技术

    据10 月 30 日 9to5 Mac 消息报道,当苹果推出新的 MacBook Pro 2021 时,该公司还推出了新的 140W USB-C 充电器,附赠在 MacBook Pro 16 英寸机型的盒子里,也支
Top