Python之dbm模块的使用
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