الوحدة dbm.gnu
في بايثون
تشبه هذه الوحدة إلى حدٍّ كبير الوحدة dbm، ولكنّها تستخدم مكتبة غنو gdbm لتقديم بعض الوظائف الإضافية. ويجب الانتباه إلى أنّ صيغ الملفات التي تنشئها dbm.gnu
و dbm.ndbm
غير متوافقة مع بعضها البعض.
تقدّم وحدة dbm.gnu
واجهة للتعامل مع مكتبة GNU DBM. وتسلك كائنات dbm.gnu.gdbm
سلوك كائنات الربط (القواميس) باستثناء أنّ المفاتيح والقيم تحوّل دائمًا إلى بايتات قبل تخزينها. لا تؤدي طباعة كائن gdbm
إلى طباعة المفاتيح والقيم، ولا تدعم هذه الكائنات التابعين items()
و values()
.
الاستثناءات
الاستثناء exception dbm.gnu.error
يطلق هذا الاستثناء عند حدوث أخطاء خاصّة بالوحدة dbm.gnu
، مثل أخطاء I/O. يطلق الاستثناء KeyError
عند حدوث أخطاء تخصّ كائنات الربط مثل تحديد مفتاح غير صحيح.
الدوال
الدالة open()
تفتح الدالة قاعدة بيانات gdbm وتعيد كائن gdbm
.
كائنات gdbm
تمتلك كائنات gdbm
التوابع التالية إضافة إلى التوابع الخاصة بالكائنات الشبيهة بالقواميس:
التابع gdbm.firstkey()
يمكن المرور على كل مفتاح في قاعدة البيانات باستخدام هذا التابع والتابع nextkey()
. تكون عملية المرور مرتّبة بحسب قيم التقطيع الداخلية internal hash values الخاصّة بقاعدة بيانات gdbm
، ولا تخزّن حسب قيم المفاتيح. يعيد هذا التابع المفتاح الذي تبدأ منه هذه العملية.
التابع gdbm.nextkey(key)
يعيد التابع المفتاح الذي يلي المفتاح key
عند المرور على مفاتيح قاعدة البيانات.
تطبع الشيفرة التالية كل مفتاح في قاعدة البيانات db
دون الحاجة إلى إنشاء قائمة تتضمن هذه المفاتيح في الذاكرة:
k = db.firstkey()
while k != None:
print(k)
k = db.nextkey(k)
التابع gdbm.reorganize()
إن كنت قد أجريت الكثير من عمليات الحذف وكنت ترغب بتقليص المساحة التي يشغلها ملف gdbm
، فإنّ هذه الدالة ستعيد ترتيب قاعدة البيانات. لن تقلّل كائنات gdbm
من حجم ملف قاعدة البيانات إلا باستخدام هذه الطريقة، وفيما عدا ذلك سيجري الاحتفاظ بالمساحة التي تشغلها الملفات المحذوفة ويعاد استخدامها عند إضافة أزواج (مفتاح، قيمة) جديدة.
التابع gdbm.sync()
يفرض هذا التابع كتابة أي بيانات غير مكتوبة على القرص الصلب عند فتح قاعدة البيانات في النمط السريع fast mode.
التابع gdbm.close()
يغلق التابع قاعدة بيانات gdbm
المفتوحة.