數(shù)據(jù)持久化(DBM文件)

DBM文件通過(guò)鍵訪問(wèn)存儲(chǔ)的文本字符串捐友。
對(duì)象存儲(chǔ)在DBM文件中甫恩,每個(gè)對(duì)象對(duì)應(yīng)一個(gè)唯一的鍵擎颖,可通過(guò)這個(gè)鍵訪問(wèn)對(duì)象。

>>> import dbm
>>> file = dbm.open('movie','c')
>>> file['Batman'] = 'Pow!'
>>> file
<dbm.dumb._Database object at 0x0000000003A880F0>
>>> file.keys()
[b'Batman']
>>> file['Batman']
b'Pow!'
>>> file.close()
打開(kāi)方式 說(shuō)明
'r' Open existing database for reading only (default)
'w' Open existing database for reading and writing
'c' Open database for reading and writing, creating it if it doesn’t exist
'n' Always create a new, empty database, open for reading and writing

上面的例子創(chuàng)建了一個(gè)dbm文件蔓钟,并且演示了如何存儲(chǔ)一個(gè)數(shù)據(jù)對(duì)象永票,并通過(guò)鍵獲取對(duì)象。

打開(kāi)方式 說(shuō)明
'r' Open existing database for reading only (default)
'w' Open existing database for reading and writing
'c' Open database for reading and writing, creating it if it doesn’t exist
'n' Always create a new, empty database, open for reading and writing

DBM文件要求鍵必須是字符串滥沫,并且需要打開(kāi)文件之后才能訪問(wèn)侣集,修改之后需要關(guān)閉文件。
DBM文件把鍵和值存儲(chǔ)為bytes類(lèi)型的對(duì)象兰绣∈婪郑可以用decode對(duì)其進(jìn)行解碼。

>>> for key in file: print(key.decode()缀辩,file[key].decode())
>>> del file['Batman']
>>> file.close()
操作 說(shuō)明
import dbm 導(dǎo)入
file = dbm.open('filename','c') 創(chuàng)建或打開(kāi)一個(gè)dbm文件
file['key'] = 'value' 創(chuàng)建或改變鍵對(duì)應(yīng)的值
value = file['key'] 獲取鍵對(duì)應(yīng)的值
count = len(file) 獲取file存儲(chǔ)的對(duì)象的數(shù)量
index = file.keys() 獲取鍵列表
found = 'key' in file 查詢file中是否有key對(duì)應(yīng)的對(duì)象
del file['key'] 刪除鍵對(duì)應(yīng)的對(duì)象
for key in file: 迭代所有鍵
file.close() 操作完畢手動(dòng)關(guān)閉文件

一個(gè)DBM文件對(duì)應(yīng)兩個(gè)文件臭埋,filename.dir和filename.dat。
DBM文件只能存儲(chǔ)字符串能表示的數(shù)據(jù)結(jié)構(gòu)臀玄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瓢阴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子镐牺,更是在濱河造成了極大的恐慌炫掐,老刑警劉巖魁莉,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睬涧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡旗唁,警方通過(guò)查閱死者的電腦和手機(jī)畦浓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)检疫,“玉大人讶请,你說(shuō)我怎么就攤上這事。” “怎么了夺溢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵论巍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我风响,道長(zhǎng)嘉汰,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任状勤,我火速辦了婚禮鞋怀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘持搜。我一直安慰自己密似,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布葫盼。 她就那樣靜靜地躺著残腌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贫导。 梳的紋絲不亂的頭發(fā)上废累,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音脱盲,去河邊找鬼邑滨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钱反,可吹牛的內(nèi)容都是我干的掖看。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼面哥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哎壳!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起尚卫,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤归榕,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后吱涉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體刹泄,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年怎爵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了特石。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鳖链,死狀恐怖姆蘸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤逞敷,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布狂秦,位于F島的核電站,受9級(jí)特大地震影響推捐,放射性物質(zhì)發(fā)生泄漏故痊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一玖姑、第九天 我趴在偏房一處隱蔽的房頂上張望愕秫。 院中可真熱鬧,春花似錦焰络、人聲如沸戴甩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)甜孤。三九已至,卻和暖如春畏腕,著一層夾襖步出監(jiān)牢的瞬間缴川,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工描馅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留把夸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓铭污,卻偏偏與公主長(zhǎng)得像恋日,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘹狞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理岂膳,服務(wù)發(fā)現(xiàn),斷路器磅网,智...
    卡卡羅2017閱讀 134,662評(píng)論 18 139
  • Java基礎(chǔ)常見(jiàn)英語(yǔ)詞匯(共70個(gè))['?bd?ekt] ['?:rientid]導(dǎo)向的 ...
    今夜子辰閱讀 3,292評(píng)論 1 34
  • 很實(shí)用的編程英語(yǔ)詞庫(kù)谈截,共收錄一千五百余條詞匯。 第一部分: application 應(yīng)用程式 應(yīng)用涧偷、應(yīng)用程序app...
    春天的蜜蜂閱讀 1,362評(píng)論 0 22
  • 在一個(gè)app歷經(jīng)數(shù)周持續(xù)開(kāi)發(fā)和多個(gè)版本快速內(nèi)部迭代之后,當(dāng)我們需要把這個(gè)版本發(fā)布到我們實(shí)際應(yīng)用場(chǎng)景中簸喂,面對(duì)我們真實(shí)...
    chenkai閱讀 25,188評(píng)論 22 58
  • 在中文IT技術(shù)論壇CSDN上發(fā)表文章取得一定成績(jī)后,就有幾位好心的出版社編輯邀請(qǐng)我來(lái)出幾本書(shū)嫂丙。這事兒讓我感到無(wú)比欣...
    沉默王二閱讀 770評(píng)論 0 0