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'
dbm_new.py

运行效果

[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'))
dbm_whichdb.py

运行效果

[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'])
dbm_read.py

 运行效果

[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)
dbm_intkeys.py

运行效果

[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)
dbm_intvalue.py

 运行效果

[root@python-mysql mnt]# python3 dbm_intvalue.py 
values must be bytes or strings
posted @ 2020-01-12 16:47  小粉优化大师  阅读(2109)  评论(0编辑  收藏  举报