python開發_dbm_鍵值對存儲_完整_博主推薦


'''
    在python的應用程序中,不需要關系型數據庫時,如MySQL
    可以使用python提供的持久字典dbm來存儲名稱和值(鍵值對)
    這個類似於java的中的java.util.Map對象。
    區別如下:

        存儲在硬盤上面
        dbm的鍵值對必須是字符串類型

    python支持的dbm模塊

        dbm         -- 常用的dbm模塊
        dbm.dumb    -- 可移植的,簡單的dbm庫
        dbm.gnu     -- GNU dbm庫

    創建一個dbm對象
    db = dbm.open('c:\\test\\Hongten.pag', 'c')

        'r'         --  open existing database for reading only(default)
        'w'         --  open existing database for reading and writing
        'c'         --  open database for reading and writing,creating it if it does'n exist
        'n'         --  always creat a new,empty database,open for reading and writing

    給dbm對象賦值,dbm中的鍵值對都是以字符串形式出現
    db['name'] = 'Hongten'
    db['gender'] = 'M'

    保存,在dbm對象關閉的時候即可保存數據
    db.close()

    刪除值:
    del db['name']
    會把db對象中的key = 'name'的值刪除

    遍歷整個db對象:
    for key in db.keys():
        print(key)
    
'''

運行效果:

運行后,會在:c:\test目錄下面出現:

Hongten.pag.bak

Hongten.pag.dat

Hongten.pag.dir

三個文件

輸出部分:

Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
保存數據...
##################################################
遍歷所有數據...
b'name' = b'Hongten'
b'gender' = b'M'
b'address' = b'\xe5\xb9\xbf\xe4\xb8\x9c\xe7\x9c\x81\xe5\xb9\xbf\xe5\xb7\x9e\xe5\xb8\x82'
##################################################
獲取[name]鍵值對數據...
b'Hongten'
##################################################
刪除[gender]鍵值對數據...
遍歷所有數據...
b'name' = b'Hongten'
b'address' = b'\xe5\xb9\xbf\xe4\xb8\x9c\xe7\x9c\x81\xe5\xb9\xbf\xe5\xb7\x9e\xe5\xb8\x82'
##################################################
刪除所有鍵值對數據...
遍歷所有數據...
>>> 

============================================

代碼部分:

============================================

  1 #python dbm
  2 
  3 #Author : Hongten
  4 #MailTo : hongtenzone@foxmail.com
  5 #QQ     : 648719819
  6 #Blog   : http://www.cnblogs.com/hongten
  7 #Create : 2013-08-09
  8 #Version: 1.0
  9 
 10 import dbm
 11 '''
 12     在python的應用程序中,不需要關系型數據庫時,如MySQL
 13     可以使用python提供的持久字典dbm來存儲名稱和值(鍵值對)
 14     這個類似於java的中的java.util.Map對象。
 15     區別如下:
 16 
 17         存儲在硬盤上面
 18         dbm的鍵值對必須是字符串類型
 19 
 20     python支持的dbm模塊
 21 
 22         dbm         -- 常用的dbm模塊
 23         dbm.dumb    -- 可移植的,簡單的dbm庫
 24         dbm.gnu     -- GNU dbm庫
 25 
 26     創建一個dbm對象
 27     db = dbm.open('c:\\test\\Hongten.pag', 'c')
 28 
 29         'r'         --  open existing database for reading only(default)
 30         'w'         --  open existing database for reading and writing
 31         'c'         --  open database for reading and writing,creating it if it does'n exist
 32         'n'         --  always creat a new,empty database,open for reading and writing
 33 
 34     給dbm對象賦值,dbm中的鍵值對都是以字符串形式出現
 35     db['name'] = 'Hongten'
 36     db['gender'] = 'M'
 37 
 38     保存,在dbm對象關閉的時候即可保存數據
 39     db.close()
 40 
 41     刪除值:
 42     del db['name']
 43     會把db對象中的key = 'name'的值刪除
 44 
 45     遍歷整個db對象:
 46     for key in db.keys():
 47         print(key)
 48     
 49 '''
 50 
 51 db = dbm.open('c:\\test\\Hongten.pag', 'c')
 52 
 53 def get_dbm():
 54     '''Open database, creating it if necessary.'''
 55     return dbm.open('c:\\test\\Hongten.pag', 'c')
 56 
 57 def save(db):
 58     '''保存數據'''
 59     print('保存數據...')
 60     db['name'] = 'Hongten'
 61     db['gender'] = 'M'
 62     db['address'] = '廣東省廣州市'
 63     db.close()
 64 
 65 def fetchall(db):
 66     '''遍歷所有'''
 67     print('遍歷所有數據...')
 68     if db is not None:
 69         for key in db.keys():
 70             print('{} = {}'.format(key, db[key]))
 71     else:
 72         print('dbm object is None!')
 73 
 74 def fetchone(db, key):
 75     '''獲取某個鍵值對'''
 76     print('獲取[{}]鍵值對數據...'.format(key))
 77     if db is not None:
 78         print(db[key])
 79     else:
 80         print('dbm object is None!')
 81 
 82 def delete(db, key):
 83     '''刪除某個鍵值對'''
 84     print('刪除[{}]鍵值對數據...'.format(key))
 85     if db is not None:
 86         del db[key]
 87     else:
 88         print('dbm object is None!')
 89 
 90 def deleteall(db):
 91     '''刪除所有鍵值對'''
 92     print('刪除所有鍵值對數據...')
 93     if db is not None:
 94         for key in db.keys():
 95             del db[key]
 96     else:
 97         print('dbm object is None!')
 98 
 99 def main():
100     db = get_dbm()
101     save(db)
102     print('#' * 50)
103     db = get_dbm()
104     fetchall(db)
105     print('#' * 50)
106     fetchone(db, 'name')
107     print('#' * 50)
108     delete(db, 'gender')
109     fetchall(db)
110     print('#' * 50)
111     deleteall(db)
112     fetchall(db)
113     
114 if __name__ == '__main__':
115     main()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM