Wo kann ich Beispiele für bsddb im Einsatz finden? [geschlossen]
-
22-08-2019 - |
Frage
Ich habe Stunden damit verbracht, um Beispiele für die Suche, wie man das bsddb Modul verwenden, und die einzigen, die ich gefunden habe, sind diese ( von hier ):
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()
Weiß jemand, wo ich könnte mehr (praktisch) Beispiele finden, wie dieses Paket zu benutzen?
Oder würde jemand Geist-Sharing-Code, die sie selbst geschrieben haben, dass sie verwendet?
Edit:
Der Grund, warum ich die Berkeley DB wählte, war wegen seiner Skalierbarkeit. Ich arbeite an einer latenten semantischen Analyse von etwa 2,2 Millionen Web-Seiten. Meine einfache Prüfung von 14 Web-Seiten generiert rund 500.000 Datensätze. Damit die Mathematik aus ... werden es etwa 78,6 Milliarden Datensätze in meiner Tabelle sein.
Wenn jemand weiß, ein anderes effizienten, skalierbaren Datenbankmodell, das ich Python zugreifen kann, informieren Sie mich darüber wissen! ( lt_kije hat es darauf aufmerksam gemacht, dass bsddb
2.6 in Python ist veraltet und wird in 3 verschwunden sein. *)
Lösung
In diesen Tagen, die meisten Leute benutzen die anydbm Meta-Modul mit db- Schnittstelle wie Datenbanken. Aber der API ist im Wesentlichen dict artig; finden Sie unter PyMOTW für einige Beispiele. Beachten Sie, dass bsddb wird in 2.6.1 veraltet und wird in 3.x. verschwunden sein Die Umstellung auf anydbm wird das Upgrade erleichtern; Umschalten auf SQLite (die jetzt in stdlib ist) wird Ihnen ein viel flexibleres Speicher.
Andere Tipps
Schauen Sie sich: Lib3 / bsddb / Test nach der Quelle von http: //pypi.python. org / pypi / bsddb3 /
Die Stromverteilung enthält die folgenden Tests, die sehr hilfreich sind mit bsddb3 zu arbeiten:
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
Ich gehe davon aus diesem Thread noch aktiv ist, so hier gehen wir. Dies ist rau Code und es gibt keine Fehlerprüfung, aber es kann als Ausgangspunkt nützlich sein.
wollte ich in PHP fest eingebauten in DBA-Funktionen verwenden und dann die Datenbank lesen Sie einen Python (2.x) Skript. Hier ist der PHP-Skript, das die Datenbank erstellt:
<?php
$id=dba_open('visitor.db', 'c', 'db4');
dba_optimize($id);
dba_close($id);
?>
Nun, hier ist der PHP-Code einen Eintrag einzufügen: Ich benutze JSON die „echten“ Daten zu halten:
<?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);
?>
Nun, hier ist der Code, den Sie und ich in wirklich interessiert sind, und es nutzt Python bsddb3 Modul.
#!/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()
Die Suche nach "import bsddb", erhalte ich:
- http://www.mnot.net/python/Cabinet.py
- http://www.java2s.com/Code/Python/Utility/Dumpadatabasefiletoapickle.htm
... aber persönlich würde ich stark empfehlen Sie SQLite statt bsddb verwenden, die Menschen der ehemaligen aus einem Grunde viel mehr verwenden.
Die Gramps Genealogie-Programm verwendet bsddb für seine Datenbank