快速了解python leveldb
本文主要是對leveldb進(jìn)行一個(gè)簡單的介紹及使用Python語言對其進(jìn)行操作的代碼示例,具體如下。
leveldb 是google實(shí)現(xiàn)的一種非常高效的key-value數(shù)據(jù)庫。key-value數(shù)據(jù)庫中,redis是比較知名且好用的,但它是一個(gè)內(nèi)存數(shù)據(jù)庫,而leveldb只需要少量的內(nèi)存,但速度依然很快,美中不足的是,沒有網(wǎng)絡(luò)服務(wù)封裝,這樣一來就只能單機(jī)使用,如果你實(shí)力足夠強(qiáng),也可以自己封裝一個(gè)。
python版本的leveldb安裝很簡單,pip install leveldb
接下來重點(diǎn)介紹使用方法。
一 、 讀寫
def single_operate(): db = leveldb.LevelDB('./data') db.Put('foo','東升') print db.Get('foo') db.Delete('foo') print db.Get('foo')
新建數(shù)據(jù)庫很方便,如果這個(gè)目錄已經(jīng)存在就會直接打開,沒有的話就會新建。示例中給出了添加,刪除,和獲取的方法,注意,是沒有修改操作的。
二 、 遍歷
如何遍歷數(shù)據(jù)呢,也非常方便,你可以指定開始的key和結(jié)束的key,也可以指定順序,是否帶value
def test_iter(): db = leveldb.LevelDB('./data') for i in xrange(10): db.Put(str(i), 'string_%s' % i) print list(db.RangeIter(key_from = '2', key_to = '5')) print list(db.RangeIter(key_from = '2', key_to = '5',reverse=True))
def iter_key_values(): db = leveldb.LevelDB('./data') for i in xrange(10): db.Put(str(i), 'string_%s' % i) keys = list(db.RangeIter(include_value = False)) print keys keys_values = list(db.RangeIter()) print keys_values
三、 批量操作
如果我對數(shù)據(jù)庫有一大批操作,每一次都和數(shù)據(jù)庫進(jìn)行交互,其實(shí)挺浪費(fèi)性能的,因此像mongodb,redis都提供了批量操作的方法,leveldb也是如此。下面是一個(gè)清空數(shù)據(jù)庫的例子
def clear_db(): db = leveldb.LevelDB('./data') b = leveldb.WriteBatch() for k in db.RangeIter(include_value = False, reverse = True): b.Delete(k) db.Write(b)
b.Delete(k)并沒有真正的刪除數(shù)據(jù),而是在db.Write(b)時(shí)執(zhí)行所有的操作
四、 快照
創(chuàng)建快照非常簡單,美中不足的是,再次加載數(shù)據(jù)庫以后,沒有方法找到之前創(chuàng)建的快照,難道已關(guān)閉這些快照就都不見了,這這樣的快照還有什么意思呢,也許只有python版本的快照是這樣的吧
def test_snapshot(): db = leveldb.LevelDB('./data') db.Put('foo','s1') s1 = db.CreateSnapshot() db.Put('foo','s2') s2 = db.CreateSnapshot() print db.Get('foo') print s1.Get('foo') print s2.Get('foo')
總結(jié)
以上就是本文關(guān)于快速了解python leveldb的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
使用Python實(shí)現(xiàn)Excel文件轉(zhuǎn)換為SVG格式
SVG(Scalable Vector Graphics)是一種基于XML的矢量圖像格式,這種格式在Web開發(fā)和其他圖形應(yīng)用中非常流行,提供了一種高效的方式來呈現(xiàn)復(fù)雜的矢量圖形,本文將介紹如何使用Python轉(zhuǎn)換Excel文件為SVG格式,需要的朋友可以參考下2024-07-07python實(shí)現(xiàn)簡單的計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單的計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07python實(shí)現(xiàn)雙色球隨機(jī)選號
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)雙色球隨機(jī)選號,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01Python實(shí)現(xiàn)自動計(jì)算特定格式的時(shí)間差
這篇文章主要介紹了利用Python實(shí)現(xiàn)在輸入一個(gè)特定格式的時(shí)間后,自動獲取前進(jìn)或者后退多少小時(shí)之后的時(shí)間。感興趣的朋友可以了解一下2021-12-12詳解Django中CBV(Class Base Views)模型源碼分析
這篇文章主要介紹了詳解Django中CBV(Class Base Views)模型源碼分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02python將四元數(shù)變換為旋轉(zhuǎn)矩陣的實(shí)例
今天小編就為大家分享一篇python將四元數(shù)變換為旋轉(zhuǎn)矩陣的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12