日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

你知道 Python 其實自帶了小型數據庫嗎

來源: 責編: 時間:2023-11-01 17:04:33 290觀看
導讀dbmDBM(DataBase Manager)是一種文件系統,專門用于鍵值對的存儲,最初是在 Unix 平臺實現,現在其它平臺也可以用。對于 KV 模型,DBM 提供了一個輕量級、高效的存儲解決方案。總的來說,DBM 具有如下特點:簡單快速:非常簡單易用,讀

dbm

GKI28資訊網——每日最新資訊28at.com

DBM(DataBase Manager)是一種文件系統,專門用于鍵值對的存儲,最初是在 Unix 平臺實現,現在其它平臺也可以用。對于 KV 模型,DBM 提供了一個輕量級、高效的存儲解決方案。GKI28資訊網——每日最新資訊28at.com

總的來說,DBM 具有如下特點:GKI28資訊網——每日最新資訊28at.com

  • 簡單快速:非常簡單易用,讀取和寫入操作都很快,適合存儲少量數據。
  • 鍵值對存儲:數據是以鍵值對形式存儲的,你可以像操作 Python 字典一樣。
  • 文件存儲:數據存在具體的文件中,可以輕松地備份和轉移。
  • 不支持復雜查詢:如果需要執行復雜查詢或需要關系型數據庫的功能,DBM 可能不是一個好選擇。

而 Python 標準庫提供了一個 dbm 模塊,它實現了 DBM 文件系統的功能,來看一下它的用法。GKI28資訊網——每日最新資訊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 文件。GKI28資訊網——每日最新資訊28at.com

圖片圖片GKI28資訊網——每日最新資訊28at.com

我們打開它,然后讀取剛才寫入的鍵值對。GKI28資訊網——每日最新資訊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 模塊吧。GKI28資訊網——每日最新資訊28at.com

當然啦,dbm 雖然很方便,但它只能持久化 bytes 對象,字符串也是轉成 bytes 對象之后再存儲的。所以除了 dbm 之外,還有一個標準庫模塊 shelve,它可以持久化任意對象。GKI28資訊網——每日最新資訊28at.com

shelve

shelve 的使用方式和 dbm 幾乎是一致的,區別就是 shelve 的序列化能力要更強,當然速度自然也就慢一些。GKI28資訊網——每日最新資訊28at.com

import shelve# 第二個參數表示模式,默認是 c# 因此文件不存在會創建,存在則追加sh = shelve.open("shelve")sh["name"] = ["S 老師", "高老師", "電烤 
                

本文鏈接:http://www.www897cc.com/showinfo-26-16369-0.html你知道 Python 其實自帶了小型數據庫嗎

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Go語言中的閉包:封裝數據與功能的強大工具

下一篇: 一文了解負載均衡器、反向代理、API 網關區別

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 桓台县| 河南省| 佛山市| 土默特左旗| 海原县| 隆回县| 定日县| 渭源县| 稻城县| 双牌县| 崇文区| 江川县| 抚州市| 五大连池市| 武邑县| 壤塘县| 广灵县| 利辛县| 德江县| 张掖市| 涿鹿县| 汝阳县| 炎陵县| 普兰县| 玉门市| 南充市| 璧山县| 夹江县| 佛冈县| 建瓯市| 大英县| 东宁县| 永昌县| 富民县| 右玉县| 宜春市| 青海省| 潍坊市| 紫阳县| 鄄城县| 资源县|