我已经花了几个小时搜索的例子如何使用bsddb模块和唯一的,我发现是这些(从这里):

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()

任何人都不会知道我在哪里可以找到更多的(实际的)的例子如何使用这套餐吗?

或者会有人介意分享码,他们已经写入他们自己用它?

编辑:

我之所以选择了Berkeley DB是因为其可伸缩性。我工作的一个潜在语义分析的大约2.2百万网页。我的简单测试的14网页产生约500 000名的记录。这样做数学题了...将有大约为78.6亿美元中的记录我的表。

如果有人知道的另一个高效、可扩展的数据库模式,我可以使用python访问,请让我知道它!(lt_kije 已经把它带到我注意 bsddb 使用Python2.6和会过去3.*)

有帮助吗?

解决方案

这些天,大多数人使用 anydbm 元模块用DB-接口如数据库。但 API 基本上是类似字典的;看到 PyMOTW 的一些例子。需要注意的是bsddb在2.6.1弃用,并将在3.x中消失切换到anydbm将使得升级更轻松;切换到源码(这是现在在STDLIB)会给你一个更灵活的存储。

其他提示

看://pypi.python:LIB3 / bsddb /测试下载从 HTTP源之后。组织/的PyPI / bsddb3 /

在电流分布包含以下测试,是开始与bsddb3工作非常有帮助的:

test_all.py
test_associate.py
test_basics.py
test_compare.py
test_compat.py
test_cursor_pget_bug.py
test_dbenv.py
test_dbobj.py
test_db.py
test_dbshelve.py
test_dbtables.py
test_distributed_transactions.py
test_early_close.py
test_fileid.py
test_get_none.py
test_join.py
test_lock.py
test_misc.py
test_pickle.py
test_queue.py
test_recno.py
test_replication.py
test_sequence.py
test_thread.py

我假设这个线程仍然活跃,所以在这里我们去。这是粗略的代码,有没有错误检查,但它可能是为出发点有用的。

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

<?php 
$id=dba_open('visitor.db', 'c', 'db4');
dba_optimize($id);
dba_close($id);
?>

现在,这里的PHP代码中插入一个条目:我使用JSON举办“真实”的数据:

<?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模块。

#!/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()

寻找"进口bsddb",我获得:

...但就个人而言我会严重推荐使用源码而不是bsddb,人们正在使用以前的多很多的原因。

外公家谱程序使用bsddb其数据库

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top