激情久久久_欧美视频区_成人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()

 

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 黑人一区二区 | 91av在线国产 | 国产一级免费视频 | 亚a在线 | 一级片a | 成年免费视频黄网站在线观看 | 中文字幕在线观看视频一区 | 美女喷水网站 | 又黄又爽免费无遮挡在线观看 | 一区二区三视频 | 日本黄色免费播放 | 成人免费在线网 | 羞羞羞网站 | 草久网 | 特级毛片免费视频 | asian附近女人裸体pics | 国产精品成人亚洲一区二区 | 亚洲电影免费观看国语版 | 一级黄色在线观看 | 久久精品视频首页 | 欧美黄色小视频 | 偿还电影免费 | 国产一区国产二区在线观看 | 黄色一级毛片免费看 | 午夜精品久久久久久中宇 | 护士hd欧美free性xxxx | 成人午夜影院 | 国产精品视频一区二区三区综合 | 国产三级影院 | 5xsq在线视频| 午夜激情视频网站 | 亚洲精品午夜在线 | 国产精品久久久久久久久久大牛 | 欧美人与牲禽动交精品一区 | 国产精品久久久久久久久岛 | 久久国精品 | 国产精品久久久乱弄 | 激情视频在线播放 | 日韩一级精品 | 九色中文字幕 | 性大片免费看 |