0、標識位的介紹
flag介紹:
r : 只讀
w : 寫
n : 總是創建一個數據庫
c : 存在不創建,不存在則創建
dbm.gnu.open():flag擴展:
f : 快速模式,即是異步
s : 同步的模式
數據的存儲格式有三種:
dbm.gnu
dbm.ndbm
dbm.dumb
1、dbm模塊創建一個簡單的數據庫

#!/usr/bin/env python3 # encoding: utf-8 import dbm with dbm.open('example.db', 'n') as db: db['key'] = 'value' db['today'] = 'Monday' db['author'] = 'suk'
運行效果
[root@python-mysql mnt]# python3 dbm_new.py [root@python-mysql mnt]# ll -rw-r--r-- 1 root root 171 Jan 12 16:18 dbm_new.py -rw-r--r-- 1 root root 52 Jan 12 16:19 example.db.bak -rw-r--r-- 1 root root 1027 Jan 12 16:19 example.db.dat -rw-r--r-- 1 root root 52 Jan 12 16:19 example.db.dir
2、dbm模塊查看數據存儲格式

#!/usr/bin/env python3 # encoding: utf-8 import dbm print(dbm.whichdb('example.db'))
運行效果
[root@python-mysql mnt]# python3 dbm_whichdb.py dbm.dumb
3、dbm模塊讀取數據庫

#!/usr/bin/env python3 # encoding: utf-8 import dbm with dbm.open('example.db', 'r') as db: print('keys()', db.keys()) for k in db.keys(): print('迭代數據:', k, db[k]) print("db['author']", db['author'])
運行效果
[root@python-mysql mnt]# python3 dbm_read.py keys() [b'key', b'today', b'author'] 迭代數據: b'key' b'value' 迭代數據: b'today' b'Monday' 迭代數據: b'author' b'suk' db['author'] b'suk'
4、dbm模塊設置值key必須是字符串或字節類型

#!/usr/bin/env python3 # encoding: utf-8 import dbm with dbm.open('example.db', 'w') as db: try: db[1] = 'one' except TypeError as err: print(err)
運行效果
[root@python-mysql mnt]# python3 dbm_intkeys.py keys must be bytes or strings
5、dbm模塊設置值value必須是字符串或字節類型

#!/usr/bin/env python3 # encoding: utf-8 import dbm with dbm.open('example.db', 'w') as db: try: db['one'] =1 except TypeError as err: print(err)
運行效果
[root@python-mysql mnt]# python3 dbm_intvalue.py values must be bytes or strings