天天看點

Python讀寫LMDB檔案Python讀寫LMDB檔案

Python讀寫LMDB檔案

LMDB的全稱是Lightning Memory-Mapped Database,它的檔案結構簡單,包含一個資料檔案和一個鎖檔案。

LMDB檔案可以同時由多個程序打開,具有極高的資料存取速度,通路簡單,不需要運作單獨的資料庫管理程序,隻要在通路資料的代碼裡引用LMDB庫,通路時給檔案路徑即可。

讓系統通路大量小檔案的開銷很大,而LMDB使用記憶體映射的方式通路檔案,使得檔案内尋址的開銷非常小,使用指針運算就能實作。資料庫單檔案還能減少資料集複制/傳輸過程的開銷。

在python中使用lmdb: linux中,可以使用指令‘pip install lmdb’ 安裝lmdb包。

1. 生成一個空的lmdb資料庫檔案

import lmdb  

# 如果train檔案夾下沒有data.mbd或lock.mdb檔案,則會生成一個空的,如果有,不會覆寫  

# map_size定義最大儲存容量,機關是kb,以下定義1TB容量  

env = lmdb.open("./train",map_size=1099511627776)  

env.close()  

2. LMDB資料的添加、修改、删除

import lmdb  

# map_size定義最大儲存容量,機關是kb,以下定義1TB容量  

env = lmdb.open("./train", map_size=1099511627776)  

txn = env.begin(write=True)  

# 添加資料和鍵值  

txn.put(key = '1', value = 'aaa')  

txn.put(key = '2', value = 'bbb')  

txn.put(key = '3', value = 'ccc')  

# 通過鍵值删除資料  

txn.delete(key = '1')  

# 修改資料  

txn.put(key = '3', value = 'ddd')  

# 通過commit()函數送出更改  

txn.commit()  

env.close()  

3. 查詢lmdb資料庫内容

import lmdb  

env = lmdb.open("./train")  

# 參數write設定為True才可以寫入  

txn = env.begin(write=True)  

############################################添加、修改、删除資料  

# 添加資料和鍵值  

txn.put(key = '1', value = 'aaa')  

txn.put(key = '2', value = 'bbb')  

txn.put(key = '3', value = 'ccc')  

# 通過鍵值删除資料  

txn.delete(key = '1')  

# 修改資料  

txn.put(key = '3', value = 'ddd')  

# 通過commit()函數送出更改  

txn.commit()  

############################################查詢lmdb資料  

txn = env.begin()  

# get函數通過鍵值查詢資料  

print txn.get(str(2))  

# 通過cursor()周遊所有資料和鍵值  

for key, value in txn.cursor():  

    print (key, value)  

############################################  

env.close()  

4. 讀取已有lmdb檔案内容

import lmdb  

env_db = lmdb.Environment('trainC')  

# env_db = lmdb.open("./trainC")  

txn = env_db.begin()  

# get函數通過鍵值查詢資料,如果要查詢的鍵值沒有對應資料,則輸出None  

print txn.get(str(200))  

for key, value in txn.cursor():  #周遊  

    print (key, value)  

env_db.close()