亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python DBM模塊輕松使用小型數(shù)據(jù)庫存儲管理數(shù)據(jù)

 更新時間:2024年01月19日 09:59:50   作者:數(shù)據(jù)小鄭  
這篇文章主要介紹了Python DBM模塊輕松使用小型數(shù)據(jù)庫存儲管理數(shù)據(jù),它可以讓你輕松地存儲和管理鍵值對數(shù)據(jù),可以使用 dbm 模塊來操作 DBM 文件,或者使用 shelve 模塊來存儲任意類型的 Python 對象

Python dbm模塊

Python 是一門非常強大和靈活的編程語言,它擁有豐富的標準庫,提供了各種各樣的功能和工具。其中,有一個模塊可能很多人不太熟悉,那就是 dbm 模塊。dbm 模塊其實是一個接口,它可以讓你使用 Python 自帶的小型數(shù)據(jù)庫,也就是 DBM 文件系統(tǒng)。

DBM(DataBase Manager)是一種文件系統(tǒng),專門用于鍵值對的存儲,最初是在 Unix 平臺實現(xiàn),現(xiàn)在其它平臺也可以用。對于 KV 模型,DBM 提供了一個輕量級、高效的存儲解決方案。總的來說,DBM 具有如下特點:

簡單快速:非常簡單易用,讀取和寫入操作都很快,適合存儲少量數(shù)據(jù)。

鍵值對存儲:數(shù)據(jù)是以鍵值對形式存儲的,你可以像操作 Python 字典一樣。

文件存儲:數(shù)據(jù)存在具體的文件中,可以輕松地備份和轉(zhuǎn)移。

不支持復雜查詢:如果需要執(zhí)行復雜查詢或需要關(guān)系型數(shù)據(jù)庫的功能,DBM 可能不是一個好選擇。

而 Python 標準庫提供了一個 dbm 模塊,它實現(xiàn)了 DBM 文件系統(tǒng)的功能,本文來看一下它的用法和拓展應用。

如何使用dmb模塊

要使用 dbm 模塊,首先需要導入它:

import dbm

然后,可以使用 dbm.open(filename, flag) 函數(shù)來打開一個 DBM 文件,或者創(chuàng)建一個新的 DBM 文件。

filename 參數(shù)是想要打開或者創(chuàng)建的 DBM 文件的名稱,flag 參數(shù)是想要以什么模式打開或者創(chuàng)建 DBM 文件,它可以是以下幾種值:

'r':只讀模式,如果文件不存在,會拋出異常。

'w':讀寫模式,如果文件不存在,會創(chuàng)建一個新文件。

'c':讀寫模式,如果文件不存在,會創(chuàng)建一個新文件。

'n':讀寫模式,如果文件存在,會覆蓋原來的內(nèi)容,如果文件不存在,會創(chuàng)建一個新文件。

打開 DBM 文件后,可以像操作字典一樣,使用 db[key] = value 來存儲數(shù)據(jù),或者使用 value = db[key] 來讀取數(shù)據(jù)。也可以使用 db.keys() 來獲取所有的鍵,或者使用 db.values() 來獲取所有的值。還可以使用 db.close() 來關(guān)閉文件,或者使用 with 語句來自動關(guān)閉文件。

初級案例應用

下面是一個簡單的示例,展示了如何使用 dbm 模塊來存儲和讀取一些學生的成績信息:

import dbm
# 創(chuàng)建一個新的 DBM 文件,存儲一些學生的成績
with dbm.open('scores.db', 'n') as db:
db['Alice'] = '90'
db['Bob'] = '80'
db['Charlie'] = '85'
# 打開已有的 DBM 文件,讀取一些學生的成績
with dbm.open('scores.db', 'r') as db:
print(db['Alice']) # 輸出 90
print(db['Bob']) # 輸出 80
print(db['Charlie']) # 輸出 85
print(db.keys()) # 輸出 [b'Alice', b'Bob', b'Charlie']
print(db.values()) # 輸出 [b'90', b'80', b'85']

需要注意的是,DBM 文件只能存儲字符串或者字節(jié)類型的數(shù)據(jù),如果想存儲其他類型的數(shù)據(jù),比如數(shù)字、列表、字典等,需要先將它們轉(zhuǎn)換成字符串或者字節(jié)類型,然后再存儲。

可以使用 str.encode() 和 str.decode() 函數(shù)來進行轉(zhuǎn)換,或者使用 pickle 模塊來進行序列化和反序列化。

進階案例應用

如果覺得 dbm 模塊的功能還不夠強大,或者想存儲更復雜的 Python 對象,可以使用 shelve 模塊。

shelve 模塊是一個基于 dbm 模塊的高級接口,它可以存儲任意類型的 Python 對象,而不需要進行轉(zhuǎn)換或者序列化。shelve 模塊的用法和 dbm 模塊非常類似:

只需要用 shelve.open(filename, flag) 來打開一個 DBM 文件,然后就可以像操作字典一樣,使用 db[key] = value 來存儲數(shù)據(jù),或者使用 value = db[key] 來讀取數(shù)據(jù)。

下面是一個簡單的示例,展示了如何使用 shelve 模塊來存儲和讀取一些學生的信息,包括姓名、年齡和成績:

import shelve
# 創(chuàng)建一個新的 DBM 文件,存儲一些學生的信息
with shelve.open('students.db', 'n') as db:
db['Alice'] = {'name': 'Alice', 'age': 18, 'score': 90}
db['Bob'] = {'name': 'Bob', 'age': 19, 'score': 80}
db['Charlie'] = {'name': 'Charlie', 'age': 20, 'score': 85}
# 打開已有的 DBM 文件,讀取一些學生的信息
with shelve.open('students.db', 'r') as db:
print(db['Alice']) # 輸出 {'name': 'Alice', 'age': 18, 'score': 90}
print(db['Bob']) # 輸出 {'name': 'Bob', 'age': 19, 'score': 80}
print(db['Charlie']) # 輸出 {'name': 'Charlie', 'age': 20, 'score': 85}
print(db.keys()) # 輸出 KeysView(<shelve.DbfilenameShelf object at 0x000001F8A5B9A4C0>)
print(db.values()) # 輸出 ValuesView(<shelve.DbfilenameShelf object at 0x000001F8A5B9A4C0>)

可以看到,shelve 模塊可以存儲和讀取復雜的 Python 對象,而不需要進行任何轉(zhuǎn)換。

但是,shelve 模塊也有一些限制,比如說,不能修改已經(jīng)存儲的對象的屬性,只能重新賦值一個新的對象。

以上就是Python DBM模塊輕松使用小型數(shù)據(jù)庫存儲管理數(shù)據(jù)的詳細內(nèi)容,更多關(guān)于Python DBM數(shù)據(jù)庫存儲管理的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python ORM編程基礎(chǔ)示例

    Python ORM編程基礎(chǔ)示例

    這篇文章主要介紹了Python ORM編程基礎(chǔ),結(jié)合實例形式分析了Python ORM編程相關(guān)概念、原理以及緩存、數(shù)據(jù)庫操作相關(guān)使用技巧,需要的朋友可以參考下
    2020-02-02
  • python光學仿真實現(xiàn)光線追跡折射與反射的實現(xiàn)

    python光學仿真實現(xiàn)光線追跡折射與反射的實現(xiàn)

    這篇文章主要為大家介紹了python光學仿真實現(xiàn)光線追跡折射與反射的實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • 使用python編寫監(jiān)聽端

    使用python編寫監(jiān)聽端

    這篇文章主要為大家詳細介紹了使用python編寫監(jiān)聽端,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python3.5基于TCP實現(xiàn)文件傳輸

    python3.5基于TCP實現(xiàn)文件傳輸

    這篇文章主要為大家詳細介紹了python3.5基于TCP實現(xiàn)文件傳輸?shù)拇a,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Django封裝交互接口代碼

    Django封裝交互接口代碼

    這篇文章主要介紹了Django封裝交互接口代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 如何將DataFrame數(shù)據(jù)寫入csv文件及讀取

    如何將DataFrame數(shù)據(jù)寫入csv文件及讀取

    在Python中進行數(shù)據(jù)處理時,經(jīng)常會用到CSV文件的讀寫操作,當需要將list數(shù)據(jù)保存到CSV文件時,可以使用內(nèi)置的csv模塊,若data是一個list,saveData函數(shù)能夠?qū)ist中每個元素存儲在CSV文件的一行,但需要注意的是,默認情況下讀取出的CSV數(shù)據(jù)類型為str
    2024-09-09
  • ubuntu安裝sublime3并配置python3環(huán)境的方法

    ubuntu安裝sublime3并配置python3環(huán)境的方法

    這篇文章主要介紹了ubuntu安裝sublime3并配置python3環(huán)境的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • python中return的返回和執(zhí)行實例

    python中return的返回和執(zhí)行實例

    今天小編就為大家分享一篇python中return的返回和執(zhí)行實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 使用Python保護或加密Excel文件的7種方法

    使用Python保護或加密Excel文件的7種方法

    Excel文件通常包含敏感信息,如財務記錄、客戶數(shù)據(jù)或?qū)S泄?保護和加密這些文件對于防止未經(jīng)授權(quán)的訪問和維護機密性至關(guān)重要,在本文中,我們將探討如何使用Python自動化Excel文件的安全保護和加密過程,確保數(shù)據(jù)的安全性,需要的朋友可以參考下
    2025-02-02
  • Java與Python兩大幸存者誰更勝一籌呢

    Java與Python兩大幸存者誰更勝一籌呢

    Python起源于一種腳本語言,它的語法體現(xiàn)了一種可讀性的理念,具有簡單而規(guī)則的界限,鼓勵簡潔和一致的代碼布局,而Java是一種面向?qū)ο笳Z言,其吸引力和價值所在是其具有的可移植性和相對效率。下面通過本文了解下java python 誰更勝一籌
    2018-04-04

最新評論