zoukankan      html  css  js  c++  java
  • 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: est目录下面出现:

    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'xe5xb9xbfxe4xb8x9cxe7x9cx81xe5xb9xbfxe5xb7x9exe5xb8x82'
    ##################################################
    获取[name]键值对数据...
    b'Hongten'
    ##################################################
    删除[gender]键值对数据...
    遍历所有数据...
    b'name' = b'Hongten'
    b'address' = b'xe5xb9xbfxe4xb8x9cxe7x9cx81xe5xb9xbfxe5xb7x9exe5xb8x82'
    ##################################################
    删除所有键值对数据...
    遍历所有数据...
    >>> 

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

    代码部分:

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

      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()
  • 相关阅读:
    通过Eclipse生成可运行的jar包
    消息队列原理概念扫盲
    为mutable类型的容器(array,set等)添加kvo,有点麻烦,供参考和了解下吧
    iOS archive(归档)的总结 (序列化和反序列化,持久化到文件)
    http相关概念在iOS中的使用介绍
    AutoLayout技术选型和应用
    addChildViewController相关api深入剖析
    SymmetricDS 完全配置安装手册
    决策树之 C4.5 算法
    决策树之 ID3 算法
  • 原文地址:https://www.cnblogs.com/hongten/p/hongten_python_dbm.html
Copyright © 2011-2022 走看看