日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

dbm

DBM(DataBase Manager)是一種文件系統(tǒng),專門用于鍵值對的存儲,最初是在 Unix 平臺實現(xiàn),現(xiàn)在其它平臺也可以用。對于 KV 模型,DBM 提供了一個輕量級、高效的存儲解決方案。

總的來說,DBM 具有如下特點:

  • 簡單快速:非常簡單易用,讀取和寫入操作都很快,適合存儲少量數(shù)據(jù)。

  • 鍵值對存儲:數(shù)據(jù)是以鍵值對形式存儲的,你可以像操作 Python/ target=_blank class=infotextkey>Python 字典一樣。

  • 文件存儲:數(shù)據(jù)存在具體的文件中,可以輕松地備份和轉(zhuǎn)移。

  • 不支持復雜查詢:如果需要執(zhí)行復雜查詢或需要關(guān)系型數(shù)據(jù)庫的功能,DBM 可能不是一個好選擇。

     

而 Python 標準庫提供了一個 dbm 模塊,它實現(xiàn)了 DBM 文件系統(tǒng)的功能,來看一下它的用法。

import dbm

# 第一個參數(shù)是文件名
# 第二個參數(shù)是模式,有以下幾種
#     r:只讀,要求文件必須存在,默認就是這個模式
#     w:可讀可寫,要求文件必須存在
#     c:可讀可寫,文件不存在會創(chuàng)建,存在則追加
#     n:可讀可寫,文件不存在會創(chuàng)建,存在則清空
# 第三個參數(shù)是權(quán)限,用八進制數(shù)字表示,默認 0o666,即可讀可寫不可執(zhí)行
db = dbm.open("store", "c")

# 打開文件就可以存儲值了,key 和 value 必須是字符串或 bytes 對象
db["name"] = "S せんせい"
db["age"] = "18"
db[b"corporation"] = "小摩".encode("utf-8")

# 關(guān)閉文件,將內(nèi)容寫到磁盤上
db.close()

非常簡單,就像操作字典一樣,并且 key 是唯一的,如果存在則替換。執(zhí)行完后,當前目錄會多出一個 store.db 文件。

你知道 Python 其實自帶了小型數(shù)據(jù)庫嗎

我們打開它,然后讀取剛才寫入的鍵值對。

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 對應(yīng)的 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'
"""

非常簡單,當你需要存儲的數(shù)據(jù)量不適合放在內(nèi)存中,但又沒必要引入數(shù)據(jù)庫,那么不妨試試使用 dbm 模塊吧。

當然啦,dbm 雖然很方便,但它只能持久化 bytes 對象,字符串也是轉(zhuǎn)成 bytes 對象之后再存儲的。所以除了 dbm 之外,還有一個標準庫模塊 shelve,它可以持久化任意對象。

 

shelve

shelve 的使用方式和 dbm 幾乎是一致的,區(qū)別就是 shelve 的序列化能力要更強,當然速度自然也就慢一些。

import shelve

# 第二個參數(shù)表示模式,默認是 c
# 因此文件不存在會創(chuàng)建,存在則追加
sh = shelve.open("shelve")

sh["name"] = ["S 老師", "高老師", "電烤

分享到:
標簽:Python
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定