当前位置:Gxlcms > Python > python使用dbm持久字典(python微型数据库)详解

python使用dbm持久字典(python微型数据库)详解

时间:2021-07-01 10:21:17 帮助过:80人阅读

在一些python小型应用程序中,不需要关系型数据库时,可以方便的用持久字典来存储名称/值对,它与python的字典非常类似,主要区别在于数据是在磁盘读取和写入的。另一个区别在于dbm的键和值必须是字符串类型。

1.选择dbm模块

python支持很多dbm模块,遗憾的是,每个dbm模块创建的文件不兼容。

下表列出这些模块:

模块说明

dbm选择最好的dbm模块

dbm.dumb使用dbm库的一个简单但可移植的实现

dbm.gnu使用GNU dbm的库

一般除非某个dbm库有特殊高级功能,那就用dbm模块。

2.创建持久词典

  1. import dbm
  2. db = dbm.open('Bookmark', 'c')
  3. #添加选项
  4. db['MyBlog'] = 'jonathanlife.sinaapp.com'
  5. print(db['MyBlog'])
  6. #保存,关闭
  7. db.close()

open函数关于打开dbm的方式有三种:

标志用法

C打开文件对其读写,必要时创建该文件

W打开文件对其读写,如果文件不存在,不会创建它

N打开文件进行读写,但总是创建一个新的空白文件


也可以传递另一种表示模式的可选参数,该模式保存了一组UNIX文件权限,这里不细说。

3.访问持久字典

从open函数返回的对象视作一个字典对象。对值的存取方式如下:

  1. db[‘key’] = ‘value’
  2. value = db[‘key’]
  3. #删除值:
  4. del db[‘key’]
  5. #遍历所有key:
  6. for key in db.keys():
  7. #your code here

代码实例:

  1. import dbm
  2. #open existing file
  3. db = dbm.open('websites', 'w')
  4. #add item
  5. db['first_data'] = 'Hello world'
  6. #verify the previous item remains
  7. if db['first_data'] != None:
  8. print('the data exists')
  9. else:
  10. print('Missing item')
  11. #iterate over the keys, may be slow
  12. for key in db.keys():
  13. print("Key=",key," value=",db[key])
  14. #delete item
  15. del db['first_data']
  16. #close and save to disk
  17. db.close()

人气教程排行