最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年04月08日 10:30:13   投稿:junjie  
這篇文章主要介紹了Python bsddb模塊操作Berkeley DB數(shù)據(jù)庫(kù)介紹,這里簡(jiǎn)單介紹一些關(guān)于bsddb的使用方法,需要的朋友可以參考下

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是用的樹(shù)結(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ù)寫(xiě)回文件
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()

相關(guān)文章

  • Python爬蟲(chóng)之Spider類用法簡(jiǎn)單介紹

    Python爬蟲(chóng)之Spider類用法簡(jiǎn)單介紹

    這篇文章主要介紹了Python爬蟲(chóng)之Spider類用法簡(jiǎn)單介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 在python中用print()輸出多個(gè)格式化參數(shù)的方法

    在python中用print()輸出多個(gè)格式化參數(shù)的方法

    今天小編就為大家分享一篇在python中用print()輸出多個(gè)格式化參數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Matplotlib中rcParams使用方法

    Matplotlib中rcParams使用方法

    這篇文章主要介紹了Matplotlib中rcParams使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python3 實(shí)現(xiàn)在運(yùn)行的時(shí)候隱藏命令窗口

    python3 實(shí)現(xiàn)在運(yùn)行的時(shí)候隱藏命令窗口

    這篇文章主要介紹了python3 實(shí)現(xiàn)在運(yùn)行的時(shí)候隱藏命令窗口方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python防止隨意修改類屬性的實(shí)現(xiàn)方法

    python防止隨意修改類屬性的實(shí)現(xiàn)方法

    這篇文章主要介紹了python防止隨意修改類屬性的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python讀取并顯示圖片的三種方法(opencv、matplotlib、PIL庫(kù))

    python讀取并顯示圖片的三種方法(opencv、matplotlib、PIL庫(kù))

    這篇文章主要給大家介紹了關(guān)于python讀取并顯示圖片的三種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python生成word合同的實(shí)例方法

    python生成word合同的實(shí)例方法

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python生成word合同的實(shí)例方法相關(guān)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • Python視頻編輯庫(kù)MoviePy的使用

    Python視頻編輯庫(kù)MoviePy的使用

    這篇文章主要介紹了Python視頻編輯庫(kù)MoviePy的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別功能的代碼

    Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別功能的代碼

    這篇文章主要介紹了Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python依賴庫(kù)的幾種離線安裝方法總結(jié)

    Python依賴庫(kù)的幾種離線安裝方法總結(jié)

    這篇文章主要介紹了如何在Python中使用pip工具進(jìn)行依賴庫(kù)的安裝和管理,包括如何導(dǎo)出和導(dǎo)入依賴包列表、如何下載和安裝單個(gè)或多個(gè)庫(kù)包及其依賴,以及如何指定不同的Python源進(jìn)行安裝,需要的朋友可以參考下
    2025-03-03

最新評(píng)論

宁远县| 河池市| 托克逊县| 商洛市| 潜江市| 凤山县| 大英县| 盐源县| 赤城县| 营口市| 林口县| 沈丘县| 松阳县| 乡宁县| 英吉沙县| 大关县| 北流市| 龙南县| 九江县| 炎陵县| 浦城县| 项城市| 运城市| 伊金霍洛旗| 常宁市| 吴江市| 册亨县| 临江市| 茶陵县| 榆社县| 当阳市| 深水埗区| 奉节县| 清苑县| 南靖县| 边坝县| 黄山市| 云浮市| 维西| 桦川县| 昌乐县|