当前位置:  开发笔记 > 编程语言 > 正文

我在哪里可以找到使用bsddb的示例?

如何解决《我在哪里可以找到使用bsddb的示例?》经验,为你挑选了3个好方法。

我花了几个小时搜索如何使用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,是因为它具有可扩展性.我正在对大约220万个网页进行潜在的语义分析.我对14个网页的简单测试产生了大约500,000条记录.所以做数学...我的表中将有大约78.6亿条记录.

如果有人知道我可以使用python访问的另一个高效,可扩展的数据库模型,请让我知道它!(lt_kije引起了我的注意,bsddb在Python 2.6中已弃用,并将在3.*中消失)



1> lt_kije..:

目前,大多数人使用anydbm元模块与类似db的数据库进行交互.但API本质上是字典; 有关示例,请参阅PyMOTW.请注意,bsddb在2.6.1中已弃用,并将在3.x中消失.切换到anydbm将使升级更容易; 切换到sqlite(现在在stdlib中)将为您提供更灵活的商店.


不推荐使用bsddb只是因为python团队难以维护,它仍然会被开发为外部模块.SQLLite是一个SQL数据库,因此比bsddb有更多的开销
根据我使用33GB key-blobvalue数据的经验,我发现Berkely DB比SQLite构建商店和遍历商店要快几倍.

2> sw...:

从http://pypi.python.org/pypi/bsddb3/下载源代码后查看:Lib3/bsddb/test

当前分发包含以下测试,这些测试对于开始使用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



3> 小智..:

我假设这个线程仍然有效,所以我们走了.这是粗略的代码,没有错误检查,但它可能是一个有用的起点.

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


现在,这是插入条目的PHP代码:我使用JSON来保存"真实"数据:

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

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有