Caffe中數據庫在include/util/db.hpp中定義三個接口:Cursor,Transacation,DB。數據庫
Cursor 爲遍歷數據庫用的遊標,SeekToFirst定位到數據庫開始的位置,Next把遊標指向下一個位置,key,value方法返回鍵和值,valid方法檢查遊標的有效性。後端
Transaction定義事物控制,Put向數據庫中加入對象,Commit提交事務。ui
DB 爲數據庫入口,Open打開一個數據庫,Close關閉數據庫。 NewCursor建立一個新的遊標。NewTransacation建立一個新的事務。google
GetDB有兩種形態,一種是依據枚舉量指定後端,一個是用字符串指定後端。後端有leveldb和lmdb。spa
using namespace caffe; // NOLINT(build/namespaces)
using std::string;
using namespace std;對象
int main(int argc, char** argv) {接口
::google::InitGoogleLogging(argv[0]);事務
auto db = db::GetDB("lmdb");
if (db == nullptr) {
printf("Create Database failed\n");
return -1;
}字符串
db->Open("examples/mnist/mnist_train_lmdb", db::READ);string
auto cursor = db->NewCursor();
while (cursor->valid()) {
cout << cursor->key() << cursor->value() << endl;
}
printf("Succes\n");
delete db;
return 0;
}