Python之dbm模块的使用

 0、标识位的介绍

flag介绍:
    r : 只读
    w : 写
    n : 总是创建一个数据库
    c : 存在不创建,不存在则创建
dbm.gnu.open():flag扩展:
    f : 快速模式,即是异步
    s : 同步的模式

数据的存储格式有三种:
dbm.gnudbm.ndbmdbm.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

运行效果

[[email protected] mnt]# python3 dbm_new.py 

[[email protected]-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

运行效果

[[email protected] 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

运行效果

[[email protected] 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

运行效果

[[email protected] 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

运行效果

[[email protected] mnt]# python3 dbm_intvalue.py
values must be bytes or strings

原文地址:https://www.cnblogs.com/ygbh/p/12182967.html

时间: 2024-08-03 08:56:23

Python之dbm模块的使用的相关文章

python的inspect模块2

转自:http://blog.csdn.net/mldxs/article/details/8652010 一.inspect模块主要提供了四种用处: (1).对是否是模块,框架,函数等进行类型检查. (2).获取源码 (3).获取类或函数的参数的信息 (4).解析堆栈 使用inspect模块可以提供自省功能,下面是关于自省的一些介绍, 首先通过一个例子来看一下本文中可能用到的对象和相关概念. import sys                  # 模块,sys指向这个模块对象 def fo

Python中subprocess 模块 创建并运行一个进程

python的subprocess模块,看到官方声明里说要尽力避免使用shell=True这个参数,于是测试了一下: from subprocess import call import shlex cmd = "cat test.txt; rm test.txt" call(cmd, shell=True) 运行之后: 1:打开并浏览了test.txt文件 2:删除了test.txt文件 from subprocess import call import shlex cmd = &

python时间处理模块 datetime time模块 deltetime模块

1 首先介绍time模块,因为简单 python 自带模块 本人使用time模块,只使用两个函数 time函数和sleep函数 import time a.     time.time()   函数 返回unix时间  常用作两个时间差的计算 b.     time.sleep()  休眠多久,精度为子秒(subsecond) In [90]: t1 = time.time() In [91]: t1 Out[91]: 1461400225.877932 In [92]: time.sleep(

python安装mysqldb模块

今天在阿里云一台新的服务器部署程序后台,发现上面的python缺少MySQLDB 模块,记录安装过程. 首先django程序,运行 python manage.py sycdb 报错: ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb MySQLdb模块的包名字叫mysql-python,于是pip安装之,(关于pip,可以参考这篇文章) 运行: pip install mysql-python

Python 利用pytesser模块识别图像文字

使用的是python的pytesser模块,原先想做的是图片中文识别,搞了一段时间了,在中文的识别上还是有很多问题,这里做记录分享. pytesser,OCR in Python using the Tesseract engine from Google.是谷歌OCR开源项目的一个模块,可将图片中的文字转换成文本(主要是英文). 1.pytesser安装 使用设备:win8 64位 PyTesser使用Tesseract OCR引擎,将图像转换到可接受的格式,然后执行tesseract提取出文

python学习--创建模块

昨天做了python客户端和服务器端通信,并把接收到的信息写到数据库,因为对数据库进行操作是个经常调用的行为,所以我想把调用数据库的操作写成一个module来给其它python程序调用,所以将昨天的服务器端程序拆分为两个文件: 1.主程序python.py #!/usr/bin/env python import socket import json import connmysql s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) h

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

[ python编程 ] subprocess模块学习总结

转载:http://www.jb51.net/article/48086.htm 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.commands.*不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息. 一.subprocess以及常用的封装函数    运行python的时候,我们都是在创建并

定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容。提示(可以了解python的urllib模块)

1 定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容.提示(可以了解python的urllib模块) 2 import urllib.request 3 4 def get_page(url): 5 response = urllib.request.urlopen(url) 6 html = response.read() 7 return html 8 9 print(get_page(url='https://www.baidu,com'))