做(zuò)自(zì)由與創造的先行(xíng)者

數(shù)據持久性 | Data Persistence gdbm

Python開(kāi)發手冊

該gdbm模塊已被重命名為(wèi)dbm.gnuPython 3. 當将源代碼轉換為(wèi)Python 3時(shí),2to3工(gōng)具将自(zì)動适應導入。

這(zhè)個模塊與模塊非常相似dbm,但(dàn)是gdbm用來提供一(yī)些附加功能(néng)。請(qǐng)注意,由gdbm和(hé)創建的文件格式dbm不兼容。

該gdbm模塊為(wèi)GNU DBM庫提供了(le)一(yī)個接口。gdbm對象的行(xíng)為(wèi)就像映射(字典),除了(le)鍵和(hé)值總​​是字符串。打印gdbm對象不會打印鍵和(hé)值,并且不支持items()和(hé)values()方法。

該模塊定義了(le)以下(xià)常量和(hé)功能(néng):

exception gdbm.error

引發gdbm特定的錯誤,例如(rú)I / O錯誤。KeyError引發一(yī)般映射錯誤,如(rú)指定不正确的鍵。

gdbm.open(filename[, flag[, mode]])

打開(kāi)一(yī)個gdbm數(shù)據庫并返回一(yī)個gdbm對象。該文件名參數(shù)是數(shù)據庫文件的名稱。

可(kě)選的标志參數(shù)可(kě)以是:

含義

'R'

打開(kāi)僅用于讀取的現有數(shù)據庫(默認)

'W'

打開(kāi)現有的數(shù)據庫進行(xíng)讀寫

'C'

打開(kāi)數(shù)據庫進行(xíng)讀寫,如(rú)果不存在則創建它

'N'

總是創建一(yī)個新的空的數(shù)據庫,打開(kāi)閱讀和(hé)寫作(zuò)

以下(xià)附加字符可(kě)以附加到該标志以控制數(shù)據庫的打開(kāi)方式:

含義

'F'

以快(kuài)速模式打開(kāi)數(shù)據庫。寫入數(shù)據庫将不會同步。

'S'

同步模式。這(zhè)将導緻數(shù)據庫的更改立即寫入文件。

“在”

不要(yào)鎖定數(shù)據庫。

并非所有标志對于所有版本都(dōu)有效gdbm。模塊常量open_flags是一(yī)串支持的标志字符。error如(rú)果指定了(le)無效标志,則會引發異常。

可(kě)選模式參數(shù)是文件的Unix模式,僅在需要(yào)創建數(shù)據庫時(shí)使用。它默認為(wèi)八進制0666。

除了(le)類似字典的方法外(wài),gdbm對象還有以下(xià)方法:

gdbm.firstkey()

使用此方法和(hé)nextkey()方法可(kě)以遍曆數(shù)據庫中的每個鍵。遍曆按gdbm內(nèi)部散列值排序,不會按鍵值排序。此方法返回開(kāi)始鍵。

gdbm.nextkey(key)

返回遍曆中關鍵字的鍵。以下(xià)代碼打印數(shù)據庫中的每個鍵db,而不必在內(nèi)存中創建一(yī)個包含它們的列表:

k = db.firstkey()

while k != None:

print k

k = db.nextkey(k)

複制

gdbm.reorganize()

如(rú)果您執行(xíng)了(le)大量删除操作(zuò)并希望縮小gdbm文件使用的空間(jiān),則此例程将重新組織數(shù)據庫。gdbm除使用此重組外(wài),不會縮短數(shù)據庫文件的長(cháng)度; 否則,删除的文件空間(jiān)将被保留并在新(鍵值)對添加時(shí)重新使用。

gdbm.sync()

當數(shù)據庫以快(kuài)速模式打開(kāi)時(shí),此方法強制任何未寫入的數(shù)據寫入磁盤。

糾錯

gdbm.close()

關閉gdbm數(shù)據庫。

網站建設開(kāi)發|APP設計開(kāi)發|小程序建設開(kāi)發