欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python bsddb模塊操作Berkeley DB數(shù)據(jù)庫(kù)介紹

系統(tǒng) 1607 0

bsddb模塊是用來(lái)操作bdb的模塊,bdb是著名的Berkeley DB,它的性能非常好,mysql的存儲(chǔ)后端引擎都支持bdb的方式。這里簡(jiǎn)單介紹一些關(guān)于bsddb的使用方法。

bdb不同于一般的關(guān)系數(shù)據(jù)庫(kù),它存儲(chǔ)的數(shù)據(jù)只能是以key和value組成的一對(duì)數(shù)據(jù),使用就像python的字典一樣,它不能直接表示多個(gè)字段,當(dāng)要存儲(chǔ)多個(gè)字段的數(shù)據(jù)時(shí),只能把數(shù)據(jù)作為一個(gè)整體存放到value中。

使用bsddb面臨的第一問(wèn)題是使用什么數(shù)據(jù)訪問(wèn)方法,bdb支持四種:btree, hash, queue, recno。這里先說(shuō)說(shuō)它們有什么區(qū)別,btree是用的樹結(jié)構(gòu)來(lái)才存儲(chǔ)的數(shù)據(jù),查詢速度很快,可以存儲(chǔ)任意復(fù)雜的key和value。hash是用的hash算法,速度其實(shí)和btree比差不多的,但是當(dāng)數(shù)據(jù)量特別巨大時(shí),應(yīng)該使用hash。queue是隊(duì)列操作,它有一個(gè)限制,它只能存儲(chǔ)定長(zhǎng)的數(shù)據(jù),也就是說(shuō)value的長(zhǎng)度是固定的!但是queue可以保持?jǐn)?shù)據(jù)的先進(jìn)先出,并且對(duì)數(shù)據(jù)的插入做了特殊的優(yōu)化,并且提供行級(jí)鎖。queue的key必須是數(shù)字。recno和queue類似,但是它可以支持變長(zhǎng)的value,它的key同樣也是數(shù)字。

??? 這里先對(duì)這四種數(shù)據(jù)訪問(wèn)方法分別做打開(kāi)數(shù)據(jù)庫(kù),簡(jiǎn)單插入一條數(shù)據(jù)的演示。
對(duì)于python的bsddb模塊來(lái)說(shuō),打開(kāi)數(shù)據(jù)庫(kù)的操作有兩種方式,一是使用原始的接口,就是先打開(kāi)一個(gè)環(huán)境,然后從這個(gè)環(huán)境中打開(kāi)一個(gè)數(shù)據(jù)庫(kù),就像下面:

復(fù)制代碼 代碼如下:

import bsddb

dbenv = bsddb.db.DBEnv()
dbenv.open(home, bsddb.db.DB_CREATE | bsddb.db.DB_INIT_MPOOL)
d = bsddb.db.DB(dbenv)
d.open(filename, bsddb.db.DB_BTREE, bsddb.db.DB_CREATE, 0666)

還有一種方式是python特有的,這個(gè)是bsddb模塊本身對(duì)上面的過(guò)程做了包裝,比如打開(kāi)btree的:

復(fù)制代碼 代碼如下:

import bsddb

db = bsddb.btopen('test.db', 'c')

看起來(lái)比上面的簡(jiǎn)單多了吧。但這種方式提供的接口很有限,也只有很簡(jiǎn)單的功能,沒(méi)有第一種的靈活,但是它在python2.5的版本里是線程安全的。這里都介紹一下。
看看一個(gè)例子:

復(fù)制代碼 代碼如下:

#-*- encoding: gb2312 -*-
import os, sys, string
import bsddb, time

home = "db_home"
filename = "test.db"
try:
??? # 創(chuàng)建home目錄
??? os.mkdir(home)
except:
??? pass

# 創(chuàng)建數(shù)據(jù)庫(kù)環(huán)境
dbenv = bsddb.db.DBEnv()
# 打開(kāi)數(shù)據(jù)庫(kù)環(huán)境
dbenv.open(home, bsddb.db.DB_CREATE | bsddb.db.DB_INIT_MPOOL)
# 創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象
d = bsddb.db.DB(dbenv)
# 打開(kāi)數(shù)據(jù)庫(kù), 這里的第二個(gè)參數(shù)就是指定使用什么數(shù)據(jù)訪問(wèn)方法
# btree是 bsddb.db.DB_BTREE, hash是bsddb.db.DB_HASH
# queu 是 bsddb.db.DB_QUEUE,? recno 是bsddb.db.DB_RECNO
d.open(filename, bsddb.db.DB_BTREE, bsddb.db.DB_CREATE, 0666)
# 插入一條數(shù)據(jù),注意queue和recno的key不能是字符串的,應(yīng)該是數(shù)字
d.put('test1', 'zhaowei')???
print d.items()
# 關(guān)閉,這時(shí)會(huì)把數(shù)據(jù)寫回文件
d.close()
dbenv.close()


下面來(lái)個(gè)使用queue的,注意看有什么區(qū)別:
復(fù)制代碼 代碼如下:

#-*- encoding: gb2312 -*-
import os, sys, string
import bsddb, time

home = "db_home"
filename = "testqueue.db"
try:
??? os.mkdir(home)
except:
??? pass

dbenv = bsddb.db.DBEnv()
dbenv.open(home, bsddb.db.DB_CREATE | bsddb.db.DB_INIT_MPOOL)
d = bsddb.db.DB(dbenv)
# queue必須要設(shè)置一個(gè)value的長(zhǎng)度,它的value是定長(zhǎng)的
d.set_re_len(40)
d.open(filename, bsddb.db.DB_QUEUE, bsddb.db.DB_CREATE, 0666)
# 它的key必須是數(shù)字
d.put(1, 'zhaowei')
print d.items()

d.close()
dbenv.close()


那簡(jiǎn)單的第二種方式使用如下, 要簡(jiǎn)潔很多了:
復(fù)制代碼 代碼如下:

import bsddb

d = bsddb.hashopen("aaa.db", "c")
d['test1'] = "zhaowei"
print d.items()
d.close()


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 天天色av | 精品久久伊人 | 波多野结衣在线网址 | 性视频一区二区 | 亚洲婷婷国产精品电影人久久 | 一级毛片在线完整免费观看 | 色噜噜狠狠色综合日日 | 91视频免费观看 | 日韩欧美一区二区三区在线视频 | 国产二区三区四区 | 国产成人99久久亚洲综合精品 | 国产精品在线观看 | 君岛美绪一区二区三区 | 亚洲欧美精品一中文字幕 | 91大神精品长腿在线观看网站 | 特黄做愛又硬又大A片视频 小视频在线看 | 日韩精品一区二区三区在线播放 | 三级在线视频 | 四库影院永久在线精品 | 一级全黄视频 | 亚洲精品第五页中文字幕 | 精品中文字幕在线观看 | 日日摸夜夜添夜夜添破第一 | 99re6在线| 精品免费视频 | 午夜影院恐怖电影免费看 | 午夜免费视频 | 久久精品国产精品青草图片 | 久久影城| 成人免费黄色网 | 99自拍视频在线观看 | 中文字幕av亚洲精品一部二部 | 草久影视 | 91精品久久 | 精品成人免费一区二区在线播放 | 在线免费观看网址 | 久久国产免费 | 久久精品麻豆 | 国产高清精品一区二区三区 | 毛片免费在线观看 | 欧美精品导航 |