首页 > 编程语言 >python berkeley DB操作——打开btree索引文件中的database

python berkeley DB操作——打开btree索引文件中的database

时间:2023-05-31 16:04:35浏览次数:25  
标签:database python db DB print rec btree mydb

打开BDB中某个索引中的数据库代码:

 

from bsddb3 import db
import bsddb3 as bsddb
print db.DB_VERSION_STRING

mydb = db.DB()
mydb.open('your_btree_db_filename', 'databsename', dbtype=db.DB_BTREE)
rec = cur.first()
while rec:
    #print key value
    print int(rec[0].encode('hex'), 16), "=>", len(rec[1])
    rec = cur.next()
mydb.close()

 注意:同一个db file中可能有多个database!

 

这样就和 /usr/local/BerkeleyDB.6.1/bin/db_dump your_btree_db_filename 结果一样了,dump结果如下所示:

VERSION=3
format=bytevalue
database=BLOCK_TIME_RANGE
type=btree
duplicates=1
db_pagesize=4096
HEADER=END
DATA=END
VERSION=3
format=bytevalue
database=xxxxyour databse name
type=btree
duplicates=1
db_pagesize=4096
HEADER=END
 01000000  #=>key
 5e096909f0fxxxxx # value
 01000001  #=>key
 5e096809f0ffff83xxxxxxx # value
xxxxxxxxxxxx more btree data xxxxxxxxxxxx

顺便补充,查看一个db中有多少数据库:

bdb = bsddb.btopen('32_20170228151803_qsb.idx', 'r')
print bdb.keys()
bdb.close()

 

再补充,打开reco DB示例:

from bsddb3 import db
import bsddb3 as bsddb
print db.DB_VERSION_STRING

mydb = db.DB()
mydb.open('30_20170228145149_qsb.db',dbtype=db.DB_RECNO)
cur = mydb.cursor()
i = 0
f = open("data.bin", "wb")
rec = cur.first()
while rec:
    #print rec
    print rec[0], type(rec[1])
    f.write(rec[1]) # write data to file
    rec = cur.next()
    i += 1
f.close()
mydb.close()

 

标签:database,python,db,DB,print,rec,btree,mydb
From: https://blog.51cto.com/u_11908275/6387697

相关文章

  • 爬虫-Python爬虫常用库
    一、常用库1、requests做请求的时候用到。requests.get("url")2、selenium自动化会用到。3、lxml4、beautifulsoup5、pyquery网页解析库说是比beautiful好用,语法和jquery非常像。6、pymysql存储库。操作mysql数据的。7、pymongo操作MongoDB数据库。8、redis非关......
  • Python解析XML文件
    今天学习如何利用Python来解析XML文档。给定一个XML文件,现在我们用Python来提取里面的内容。<deals><data><deal><deal_id>11111111</deal_id><sales_num>120</sales_num><price>15.0</price>......
  • Python 发送微信消息
    Python发送微信消息安装pipinstallitchat1、基本使用#使用微信接口给微信好友发送消息,importitchatnickname="迪丽热巴"send_message="测试消息"try:#1.自动登录方法,hotReload=True可以缓存,不用每次都登录,但是第一次执行时会出现一个二维码,需要......
  • Python 发送邮件
    Python发送邮件1、案例一(发送普通邮件)importsmtplibfromemail.mime.textimportMIMEText#发送普通邮件#POP3服务器地址:pop.qq.com#SMTP服务器地址:smtp.qq.comclassSendEmail:def__init__(self):#发送邮件的用户self.send_user=......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-2-playwright的API及其他知识
    1.简介上一篇宏哥已经将Python+Playwright的环境搭建好了,而且也简单的演示了一下三款浏览器的启动和关闭,是不是很简单啊。今天主要是把一篇的中的代码进行一次详细的注释,然后说一下playwright的API和其他相关知识点。那么首先将上一篇中的代码进行一下详细的解释。2.代码解释2.......
  • Python 函数
    函数返回多个返回值defmultiple_return_value():importdatetimed=datetime.date.today()val_1='年份为:{}'.format(d.year)val_2='月份为:{}'.format(d.month)returnval_1,val_2#只需在return关键字后跟多个值(依次用逗号分隔)val=mult......
  • python 中 re.match和re.search()函数
     两者都返回首次匹配字符串的索引,re.match函数只从头开始匹配,re.search函数不限制只从头开始匹配。001、re.match函数[root@PC1test2]#python3Python3.10.9(main,Mar12023,18:23:06)[GCC11.2.0]onlinuxType"help","copyright","credits"or"license"......
  • python 视频拆分成帧,帧合成视频
    参考python将视频切分成帧&&帧合成视频,下面的代码来自这篇博客。#====================视频拆分成帧===================================importcv2defvideo2frame(videos_path,frames_save_path,time_interval):''':paramvideos_path:视频的存放路径:par......
  • 果然python是直接可以使用requests去请求https站点的,意味着一般的扫描工具可以直接扫
    #coding:utf-8importrequests#请求地址#url="https://www.qlchat.com"url="https://www.baidu.com"headers={'user-agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chro......
  • python 从bulkblacklist信誉查询网站提交查询
    importurllibimporturllib2#importwebbrowserimportreimportsocketdefis_domain_in_black_list(domain,ip):try_time=3url="http://www.bulkblacklist.com/"foriinrange(try_time):try:data=......