国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python bsddb模塊操作Berkeley DB數據庫介紹

Python bsddb模塊操作Berkeley DB數據庫介紹

2020-06-01 11:00腳本之家 Python

這篇文章主要介紹了Python bsddb模塊操作Berkeley DB數據庫介紹,這里簡單介紹一些關于bsddb的使用方法,需要的朋友可以參考下

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

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

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

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

復制代碼 代碼如下:


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的:

復制代碼 代碼如下:


import bsddb

 

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

 

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

復制代碼 代碼如下:


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

 

home = "db_home"
filename = "test.db"
try:
    # 創建home目錄
    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)
# 打開數據庫, 這里的第二個參數就是指定使用什么數據訪問方法
# 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)
# 插入一條數據,注意queue和recno的key不能是字符串的,應該是數字
d.put('test1', 'zhaowei')   
print d.items()
# 關閉,這時會把數據寫回文件
d.close()
dbenv.close()


下面來個使用queue的,注意看有什么區別:

復制代碼 代碼如下:


#-*- 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必須要設置一個value的長度,它的value是定長的
d.set_re_len(40)
d.open(filename, bsddb.db.DB_QUEUE, bsddb.db.DB_CREATE, 0666)
# 它的key必須是數字
d.put(1, 'zhaowei')
print d.items()

d.close()
dbenv.close()


那簡單的第二種方式使用如下, 要簡潔很多了:

復制代碼 代碼如下:


import bsddb

 

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

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品国产综合久久久久久丝袜 | 91亚洲精品一区 | 日本不卡一区二区三区在线观看 | 日本电影一区 | 中文字幕精品一区二区三区精品 | 久久久久久亚洲精品 | 亚洲精品一区二区三区在线 | 亚洲日韩欧美一区二区在线 | 96久久久| 日本免费在线一区 | 免费网站在线观看黄 | 国产伦精品一区二区三区四区视频 | www.夜夜骑| 久久久精 | 99爱精品在线 | 亚洲成av在线 | 欧美精品成人一区二区在线 | 草久在线观看 | 日韩在线精品视频 | 91麻豆产精品久久久久久 | 精品国产91乱码一区二区三区 | 黄色一级视频 | 91精品久久久久久久久久入口 | 免费黄色在线观看 | 日韩一区二区三区视频 | 国产精品毛片久久久久久久av | 成人在线视频网站 | 在线电影亚洲 | 亚洲免费网站 | 精品乱子伦一区二区三区 | 伊人一区 | av在线电影网 | 国产精品久久久久久久久久久久久久 | 天天躁人人躁人人躁狂躁 | 国产亚洲精品美女久久久久久久久久 | 99视频在线播放 | 国产真实精品久久二三区 | 免费看黄a | 国产一区二区三区视频 | 国产中文字幕观看 | 亚洲一本 |