亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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

復(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特有的,這個是bsddb模塊本身對上面的過程做了包裝,比如打開btree的:

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

import bsddb

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

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

復(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ù)庫環(huán)境
dbenv = bsddb.db.DBEnv()
# 打開數(shù)據(jù)庫環(huán)境
dbenv.open(home, bsddb.db.DB_CREATE | bsddb.db.DB_INIT_MPOOL)
# 創(chuàng)建數(shù)據(jù)庫對象
d = bsddb.db.DB(dbenv)
# 打開數(shù)據(jù)庫, 這里的第二個參數(shù)就是指定使用什么數(shù)據(jù)訪問方法
# 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ù)據(jù)寫回文件
d.close()
dbenv.close()


下面來個使用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è)置一個value的長度,它的value是定長的
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()


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

import bsddb

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

相關(guān)文章

  • python 循環(huán)讀取txt文檔 并轉(zhuǎn)換成csv的方法

    python 循環(huán)讀取txt文檔 并轉(zhuǎn)換成csv的方法

    今天小編就為大家分享一篇python 循環(huán)讀取txt文檔 并轉(zhuǎn)換成csv的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python判斷文件和文件夾是否存在的方法(最新推薦)

    Python判斷文件和文件夾是否存在的方法(最新推薦)

    常在讀寫文件之前,需要判斷文件或目錄是否存在,不然某些處理方法可能會使程序出錯,所以最好在做任何操作之前,先判斷文件是否存在,沒有則創(chuàng)建,今天通過實例代碼講解下Python判斷文件和文件夾是否存在的方法,感興趣的朋友一起看看吧
    2022-11-11
  • python使用dataframe_image將dataframe表格轉(zhuǎn)為圖片

    python使用dataframe_image將dataframe表格轉(zhuǎn)為圖片

    本文主要介紹了python使用dataframe_image將dataframe表格轉(zhuǎn)為圖片,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Python第三方庫face_recognition在windows上的安裝過程

    Python第三方庫face_recognition在windows上的安裝過程

    今天為大家介紹下face recognition在Windows系統(tǒng)上安裝與使用,但在Windows平臺上face recognition性能會有所下降
    2019-05-05
  • Python對wav文件的重采樣實例

    Python對wav文件的重采樣實例

    今天小編就為大家分享一篇Python對wav文件的重采樣實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 修復(fù)Python?Pandas數(shù)據(jù)標(biāo)記錯誤的幾種方法總結(jié)

    修復(fù)Python?Pandas數(shù)據(jù)標(biāo)記錯誤的幾種方法總結(jié)

    用于分析數(shù)據(jù)的?Python?庫稱為?Pandas,在?Pandas?中讀取數(shù)據(jù)最常見的方式是通過?CSV?文件,但?CSV?文件的限制是它應(yīng)該采用特定的格式,否則在標(biāo)記數(shù)據(jù)時會拋出錯誤,在本文中,我們將討論修復(fù)?Python?Pandas?錯誤標(biāo)記數(shù)據(jù)的各種方法
    2023-10-10
  • Python編譯過程和執(zhí)行原理解析

    Python編譯過程和執(zhí)行原理解析

    這篇文章主要介紹了Python編譯過程和執(zhí)行原理解析,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • pytorch常見的Tensor類型詳解

    pytorch常見的Tensor類型詳解

    今天小編就為大家分享一篇pytorch常見的Tensor類型詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python編程基礎(chǔ)之函數(shù)和模塊

    Python編程基礎(chǔ)之函數(shù)和模塊

    這篇文章主要為大家介紹了Python函數(shù)和模塊,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 查看django執(zhí)行的sql語句及消耗時間的兩種方法

    查看django執(zhí)行的sql語句及消耗時間的兩種方法

    今天小編就為大家分享一篇查看django執(zhí)行的sql語句及消耗時間的兩種方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論