الوحدة 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 المفتوحة.

انظر أيضًا

  • الوحدة dbm في بايثون.
  • الوحدة dbm.ndbm في بايثون.
  • الوحدة dbm.dumb في بايثون.

مصادر