Pregunta

Me he pasado horas buscando ejemplos de cómo utilizar el módulo bsddb y los únicos que he encontrado son estos (desde aquí):

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

¿Alguien sabe dónde podría encontrar más (práctico) ejemplos de cómo utilizar este paquete?

O a nadie le importa compartir el código que se ha escrito a sí mismos que utilizó?

Editar:

La razón por la que elegí la base de datos Berkeley DB fue debido a su escalabilidad.Estoy trabajando en un análisis semántico latente de alrededor de 2.2 Millones de páginas web.Mi simple prueba de 14 páginas web genera alrededor de 500.000 registros.Para hacer los cálculos de...habrá cerca de 78.6 Millones de registros en mi tabla.

Si alguien sabe de otro eficiente, escalable modelo de base de datos que puedo usar python para acceder, por favor hágamelo saber!(lt_kije ha traído a mi atención que bsddb está en desuso en Python 2.6 y se ha ido en 3.*)

¿Fue útil?

Solución

En estos días, la mayoría de la gente utiliza el href="http://docs.python.org/library/anydbm.html" rel="noreferrer"> anydbm meta-módulo es esencialmente dict-similares; ver PyMOTW para algunos ejemplos. Tenga en cuenta que bsddb está en desuso en 2.6.1 y se ha ido en 3.x. El cambio a anydbm hará más fácil la actualización; el cambio a SQLite (que ahora está en stdlib) le dará una tienda mucho más flexible.

Otros consejos

Mira: Lib3 / bsddb / prueba después de la descarga de la fuente de la http: //pypi.python. org / PyPI / bsddb3 /

La distribución actual contiene las siguientes pruebas que son muy útiles para empezar a trabajar con 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

Estoy asumiendo que este hilo sigue activo, así que aquí vamos.Este es áspera código y no hay ninguna comprobación de errores, pero puede ser útil como punto de partida.

Yo quería usar PHP integrado en DBA funciones y, a continuación, lea la base de datos usando Python (2.x) secuencia de comandos.Aquí está el script PHP que crea la base de datos:

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

Ahora, aquí está el código PHP para insertar una entrada:Yo uso de JSON para celebrar el "real" de datos:

<?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);
?>

Ahora, aquí está el código que usted y yo estamos realmente interesados en, y se utiliza Python bsddb3 módulo.

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

La búsqueda de "bsddb importación", me sale:

... pero personalmente había gran medida recomiendan utiliza SQLite en lugar de bsddb, la gente está utilizando la antigua mucho más por una razón.

El programa de genealogía abuelo utiliza bsddb por su base de datos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top