zoukankan      html  css  js  c++  java
  • python berkeley DB操作——打开btree索引文件中的database

    打开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()
  • 相关阅读:
    restfulframework详解
    restful规范
    02-模板字符串
    01-学习vue前的准备工作
    vue系列
    crawler_编码转换_unicode(年)
    002-算法-递归法
    001-算法-递推法
    000-算法-基础概念
    linux_后台启动多个java -jar 程序,及关闭
  • 原文地址:https://www.cnblogs.com/bonelee/p/6510543.html
Copyright © 2011-2022 走看看