首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪里可以找到使用bsddb的例子?

在哪里可以找到使用bsddb的例子?
EN

Stack Overflow用户
提问于 2009-04-01 16:22:38
回答 4查看 8.2K关注 0票数 8

我花了几个小时寻找如何使用bsddb模块的示例,我找到的惟一示例是以下(从这里开始):

代码语言:javascript
复制
data = mydb.get(key)
if data:
    doSomething(data)
#####################
rec = cursor.first()
while rec:
    print rec
    rec = cursor.next()
#####################
rec = mydb.set()
while rec:
    key, val = rec
    doSomething(key, val)
    rec = mydb.next()

有人知道我在哪里能找到更多如何使用这个包的例子吗?

或者有人会介意分享他们自己编写的使用它的代码吗?

编辑:

我之所以选择伯克利DB是因为它的可伸缩性。我正在对大约220万个网页进行潜在的语义分析。我对14个网页的简单测试产生了大约50万条记录。所以算出来..。我的桌子上将有大约786亿份记录。

如果有人知道另一个有效的、可伸缩的数据库模型,我可以使用python访问,请让我知道它!(lt_kije使我注意到,bsddb在Python2.6中被弃用,并将在3.*中消失。)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-01 18:08:21

如今,大多数人使用anydbm元模块与类似于db的数据库进行接口。但API接口本质上是切块式的;有关一些示例,请参见PyMOTW。注意,bsddb在2.6.1中被弃用,并将在3.x中消失。切换到anydbm将使升级更容易;切换到sqlite (现在在stdlib中)将为您提供一个更灵活的存储。

票数 8
EN

Stack Overflow用户

发布于 2013-08-09 10:46:39

我假设这个线程仍然是活动的,所以我们开始。这是粗略的代码,没有错误检查,但它可能是一个有用的起点。

我想使用PHP的内置DBA函数,然后使用Python (2.x)脚本读取数据库。下面是创建数据库的PHP脚本:

代码语言:javascript
复制
<?php 
$id=dba_open('visitor.db', 'c', 'db4');
dba_optimize($id);
dba_close($id);
?>

现在,下面是插入条目的PHP代码:我使用JSON保存“真实”数据:

代码语言:javascript
复制
<?php 
/* 
    record a visit in a BSD DB
*/
$id=dba_open('visitor.db', 'w', 'db4');
if (!$id) {
    /* dba_open failed */
    exit;
}
$key  = $_SERVER['REQUEST_TIME_FLOAT']; 
$rip  = $_SERVER['REMOTE_ADDR'];
$now  = date('d-m-Y h:i:s a', time()); 
$data = json_encode( array('remote_ip' => $rip, 'timestamp' => $now) );
$userdata=array($key => $data);
foreach ($userdata as $key=>$value) {
dba_insert($key, $value, $id);
}
dba_optimize($id);
dba_close($id);
?>

现在,这里是您和我真正感兴趣的代码,它使用Python的bsddb3模块。

代码语言:javascript
复制
#!/usr/bin/env python
from bsddb3 import db
import json

fruitDB = db.DB()
fruitDB.open('visitor.db',None,db.DB_BTREE,db.DB_DIRTY_READ)
cursor = fruitDB.cursor()
rec = cursor.first()

while rec:
    print rec
    visitordata = rec[1]
    print '\t' + visitordata
    jvdata = json.loads(visitordata)
    print jvdata
    rec = cursor.next()
    print '\n\n'
print '----';

fruitDB.close()
票数 5
EN

Stack Overflow用户

发布于 2009-04-01 18:06:11

在搜索“导入bsddb”时,我得到:

  • http://www.mnot.net/python/Cabinet.py
  • http://www.java2s.com/Code/Python/Utility/Dumpadatabasefiletoapickle.htm

...but我个人强烈建议您使用sqlite而不是bsddb,人们使用前者是有原因的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/706322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档