如何从Berkeley DB中检索一系列数据,例如10 < key < 20
?我找不到任何东西。
答案 0 :(得分:1)
我快速浏览了http://pybsddb.sourceforge.net/bsddb3.html,以下想法看起来很有希望:创建一个DBCursor对象,调用其.set
方法查找键10
,然后调用它{ {1}}方法直至到达.next
。
我不知道C API的细节,但我会尝试相同的想法:尝试创建游标,并在游标上调用名为20
和set
的函数。
答案 1 :(得分:0)
也许这段代码可以帮到你。它使用key1&lt; = key&lt; = key2提取条目,但是可以根据您的条件进行修改。我使用第一个DB_SET_RANGE标志来查找key =&gt; key1,然后使用DB_NEXT标志来获取下一个值并检查它们是&lt; = key2。
void get(DB *dbp, int key1, int key2){
DBC *curs;
DBT k,v;
int fl;
// Get a cursor
dbp->cursor(dbp, NULL, &curs, 0);
if (!curs) _dberr("can't get a cursor");
// Set DBT for 1st key and value
memset(&v, 0, sizeof(DBT));
memset(&k, 0, sizeof(DBT));
k.data = &key1;
k.size = sizeof(key1);
fl = DB_SET_RANGE; // first key will be >=key1
while (curs->c_get(curs, &k, &v, fl)==0 &&
key2 >= *(int *)k.data){
fl = DB_NEXT;
// use v.data
}
}