أين يمكنني العثور على أمثلة على bsddb قيد الاستخدام؟[مغلق]
-
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"، أحصل على:
- http://www.mnot.net/python/Cabinet.py
- http://www.java2s.com/Code/Python/Utility/Dumpadatabasefiletoapickle.htm
...لكنني شخصيًا أوصي بشدة باستخدام sqlite بدلاً من bsddb، فالناس يستخدمون الأول كثيرًا لسبب ما.
ال جرامبس يستخدم برنامج الأنساب bsddb لقاعدة البيانات الخاصة به