做自(zì)由與創造的先行者

數據持久性 | Data Persistence bsddb

Python開(kāi)發手冊

自(zì)2.6版以來(lái)已棄用(yòng):該bsddb模塊已在Python 3中删除。

該bsddb模塊爲Berkeley DB庫提供了(le)一個接口。用(yòng)戶可以使用(yòng)适當的公開(kāi)呼叫創建哈希,btree或基于記錄的庫文(wén)件。Bsddb對(duì)象的行爲通常與字典類似。但(dàn)是,鍵和(hé)值必須是字符串,因此要将其他(tā)對(duì)象用(yòng)作(zuò)鍵或存儲其他(tā)類型的對(duì)象,用(yòng)戶必須以某種方式将它們序列化,通常使用(yòng)marshal.dumps()或pickle.dumps()。

該bsddb模塊需要從(cóng)4.0到(dào)4.7的Berkeley DB庫版本。

模塊中提供了(le)更現(xiàn)代的DB,DBEnv和(hé)DBSequence對(duì)象接口,bsddb.db它與上(shàng)述URL中記錄的Berkeley DB C API密切匹配。bsddb.dbAPI 提供的其他(tā)功能(néng)包括微調,事(shì)務處理(lǐ),日志記錄和(hé)多進程并發數據庫訪問。

以下(xià)是bsddb與舊的Python bsddb模塊兼容的舊界面的描述。從(cóng)Python 2.5開(kāi)始,此接口對(duì)于多線程訪問應該是安全的。該bsddb.dbAPI推薦用(yòng)于線程用(yòng)戶,因爲它提供了(le)更好(hǎo)的控制。

該bsddb模塊定義了(le)以下(xià)函數,用(yòng)于創建訪問适當類型的Berkeley DB文(wén)件的對(duì)象。每個函數的前兩個參數是相同的。爲了(le)便于攜帶,大(dà)多數情況下(xià)隻應使用(yòng)前兩個參數。

bsddb.hashopen(filename[, flag[, mode[, pgsize[, ffactor[, nelem[, cachesize[, lorder[, hflags]]]]]]]])

打開(kāi)名爲filename的哈希格式文(wén)件。從(cóng)不打算(suàn)保存在磁盤上(shàng)None的文(wén)件可以通過傳遞作(zuò)爲文(wén)件名來(lái)創建。可選标志标識用(yòng)于打開(kāi)文(wén)件的模式。它可以是'r'(隻讀),'w'(讀寫),'c'(讀寫 - 如果需要則創建;默認)或'n'(讀寫 - 截斷爲零長度)。其他(tā)參數很(hěn)少使用(yòng),隻傳遞給低(dī)級dbopen()函數。請(qǐng)參閱Berkeley DB文(wén)檔以獲取它們的使用(yòng)和(hé)解釋。

bsddb.btopen(filename[, flag[, mode[, btflags[, cachesize[, maxkeypage[, minkeypage[, pgsize[, lorder]]]]]]]])

打開(kāi)名爲filename的btree格式文(wén)件。從(cóng)不打算(suàn)保存在磁盤上(shàng)None的文(wén)件可以通過傳遞作(zuò)爲文(wén)件名來(lái)創建。可選标志标識用(yòng)于打開(kāi)文(wén)件的模式。它可以是'r'(隻讀),'w'(讀寫),'c'(讀寫 - 如果需要則創建;默認)或'n'(讀寫 - 截斷爲零長度)。其他(tā)參數很(hěn)少使用(yòng),隻傳遞給低(dī)級dbopen函數。請(qǐng)參閱Berkeley DB文(wén)檔以獲取它們的使用(yòng)和(hé)解釋。

bsddb.rnopen(filename[, flag[, mode[, rnflags[, cachesize[, pgsize[, lorder[, rlen[, delim[, source[, pad]]]]]]]]]])

打開(kāi)一個名爲filename的DB記錄格式文(wén)件。從(cóng)不打算(suàn)保存在磁盤上(shàng)None的文(wén)件可以通過傳遞作(zuò)爲文(wén)件名來(lái)創建。可選标志标識用(yòng)于打開(kāi)文(wén)件的模式。它可以是'r'(隻讀),'w'(讀寫),'c'(讀寫 - 如果需要則創建;默認)或'n'(讀寫 - 截斷爲零長度)。其他(tā)參數很(hěn)少使用(yòng),隻傳遞給低(dī)級dbopen函數。請(qǐng)參閱Berkeley DB文(wén)檔以獲取它們的使用(yòng)和(hé)解釋。

注釋

從(cóng)2.3開(kāi)始,Python的某些(xiē)Unix版本可能(néng)有一個bsddb185模塊。這(zhè)隻是爲了(le)允許與舊Berkeley DB 1.85數據庫附帶的系統向後兼容。bsddb185不應該直接在新代碼中使用(yòng)該模塊。該模塊已在Python 3中删除。如果您發現(xiàn)您仍然需要它,請(qǐng)查看(kàn)PyPI。

1.哈希,BTree和(hé)記錄對(duì)象

一旦實例化,哈希,btree和(hé)記錄對(duì)象支持與字典相同的方法。另外(wài),他(tā)們支持下(xià)面列出的方法。

在版本2.3.1中進行了(le)更改:添加了(le)字典方法。

bsddbobject.close()

關閉底層文(wén)件。該對(duì)象不能(néng)再被訪問。由于open()這(zhè)些(xiē)對(duì)象沒有開(kāi)放(fàng)的方法,所以要再次打開(kāi)文(wén)件,bsddb必須調用(yòng)一個新的模塊打開(kāi)函數。

bsddbobject.keys()

返回DB文(wén)件中包含的密鑰列表。列表的順序是未指定的,不應該依賴。特别是,對(duì)于不同的文(wén)件格式,返回列表的順序是不同的。

bsddbobject.has_key(key)

返回1如果DB文(wén)件中包含的參數作(zuò)爲重點。

bsddbobject.set_location(key)

将遊标設置爲key所指示的項目并返回包含該鍵及其值的元組。對(duì)于使用(yòng)二進制樹數據庫的數據庫btopen(),如果key實際上(shàng)不存在于數據庫中,則遊标将按照排序順序指向下(xià)一個項目并返回該鍵和(hé)值。對(duì)于其他(tā)數據庫,KeyError如果在數據庫中找不到(dào)密鑰,則會(huì)引發其他(tā)數據庫。

bsddbobject.first()

将光标設置爲DB文(wén)件中的第一項并返回。除B-Tree數據庫外(wài),文(wén)件中鍵的順序是未指定的。bsddb.error如果數據庫爲空(kōng),則引發此方法。

bsddbobject.next()

将光标設置爲DB文(wén)件中的下(xià)一個項目并将其返回。除B-Tree數據庫外(wài),文(wén)件中鍵的順序是未指定的。

bsddbobject.previous()

将光标設置到(dào)數據庫文(wén)件中的前一項并返回。除B-Tree數據庫外(wài),文(wén)件中鍵的順序是未指定的。這(zhè)在散列表數據庫(打開(kāi)的數據庫hashopen())上(shàng)不受支持。

bsddbobject.last()

将光标設置爲DB文(wén)件中的最後一項并返回。文(wén)件中的鍵的順序是未指定的。這(zhè)在散列表數據庫(打開(kāi)的數據庫hashopen())上(shàng)不受支持。bsddb.error如果數據庫爲空(kōng),則引發此方法。

bsddbobject.sync()

在磁盤上(shàng)同步數據庫。

網站(zhàn)建設開(kāi)發|APP設計(jì)開(kāi)發|小(xiǎo)程序建設開(kāi)發
下(xià)一篇:數據持久性 | Data Persistence copy_reg
上(shàng)一篇:數據持久性 | Data Persistence anydbm