我花了几个小时搜索如何使用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.*中消失)
目前,大多数人使用anydbm元模块与类似db的数据库进行交互.但API本质上是字典; 有关示例,请参阅PyMOTW.请注意,bsddb在2.6.1中已弃用,并将在3.x中消失.切换到anydbm将使升级更容易; 切换到sqlite(现在在stdlib中)将为您提供更灵活的商店.
从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
我假设这个线程仍然有效,所以我们走了.这是粗略的代码,没有错误检查,但它可能是一个有用的起点.
我想使用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()