標籤:python berkeley-db
1.下載原始碼shell > wget http://download.oracle.com/berkeley-db/db-5.3.21.tar.gzshell > wget http://pypi.python.org/packages/source/b/bsddb3/bsddb3-5.3.0.tar.gz#md5=d5aa4f293c4ea755e84383537f74be822, 解壓縮,進入目錄3, 安裝berkeley-db shell > cd build_unix/shell > ../dist/configure #預設安裝在/usr/local/BerkeleyDB.5.3下shell > makeshell > sudo make install4 ,安裝 python bindingshell > sudo python setup.py --lflags="/usr/local/BerkeleyDB.5.3/lib/libdb-5.3.so" install
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同樣也是數字。
#-*- encoding: gb2312 -*-import os, sys, stringimport bsddb, timehome = "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_RECNOd.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()
https://www.jcea.es/programacion/pybsddb_doc/ 相關linux下關於python berkeley-db 文檔地址!
linux下berkeley-db及python binding安裝