أين يمكنني العثور على أمثلة على bsddb قيد الاستخدام؟[مغلق]

StackOverflow https://stackoverflow.com/questions/706322

  •  22-08-2019
  •  | 
  •  

سؤال

لقد أمضيت ساعات في البحث عن أمثلة لكيفية استخدام وحدة 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 صفحة ويب ينتج عنه حوالي 500000 سجل.لذا قم بإجراء الحسابات ...سيكون هناك حوالي 78.6 مليار سجل في جدولي.

إذا كان أي شخص يعرف نموذج قاعدة بيانات آخر فعال وقابل للتطوير يمكنني استخدام لغة بايثون للوصول إليه، فيرجى إبلاغي بذلك!(lt_kije وقد لفت انتباهي ذلك bsddb تم إهماله في Python 2.6 وسيختفي في 3.*)

هل كانت مفيدة؟

المحلول

في هذه الأيام، يستخدم معظم الناس com.anydbm وحدة التعريف للتفاعل مع قواعد البيانات المشابهة لقاعدة البيانات.لكن ال واجهة برمجة التطبيقات هو في الأساس يشبه الإملاء؛يرى بيموتو لبعض الأمثلة.لاحظ أن bsddb مهمل في الإصدار 2.6.1 وسيختفي في الإصدار 3.x.التبديل إلى Anydbm سيجعل الترقية أسهل؛سيمنحك التبديل إلى sqlite (الموجود الآن في stdlib) متجرًا أكثر مرونة.

نصائح أخرى

ينظر الى:Lib3/bsddb/test بعد تنزيل المصدر من http://pypi.python.org/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

أفترض أن هذا الموضوع لا يزال نشطًا، لذا ها نحن ذا.يعد هذا رمزًا تقريبيًا ولا يوجد فحص للأخطاء، ولكنه قد يكون مفيدًا كنقطة بداية.

كنت أرغب في استخدام وظائف DBA المضمنة في PHP ثم قراءة قاعدة البيانات باستخدام برنامج 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);
?>

الآن، هذا هو الكود الذي نهتم به أنا وأنت بالفعل، وهو يستخدم وحدة 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"، أحصل على:

...لكنني شخصيًا أوصي بشدة باستخدام sqlite بدلاً من bsddb، فالناس يستخدمون الأول كثيرًا لسبب ما.

ال جرامبس يستخدم برنامج الأنساب bsddb لقاعدة البيانات الخاصة به

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top