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()
  • 相关阅读:
    DEDECMS里面DEDE函数解析
    dede数据库类使用方法 $dsql
    DEDE数据库语句 DEDESQL命令批量替换 SQL执行语句
    织梦DedeCms网站更换域名后文章图片路径批量修改
    DSP using MATLAB 示例 Example3.12
    DSP using MATLAB 示例 Example3.11
    DSP using MATLAB 示例 Example3.10
    DSP using MATLAB 示例Example3.9
    DSP using MATLAB 示例Example3.8
    DSP using MATLAB 示例Example3.7
  • 原文地址:https://www.cnblogs.com/hongten/p/hongten_python_dbm.html
Copyright © 2011-2022 走看看