পাইথনের বিল্ট-ইন লাইব্রেরির dbm প্যাকেজ DBM-স্টাইল ডাটাবেসের সাথে ডিকশনারি-লাইক ইন্টারফেস দেয়। dbm লাইব্রেরি হলো একটি সিম্পল ডাটাবেস ইঞ্জিন, লিখেছেন কেন থম্পসন। DBM মানে DataBase Manager, যা UNIX অপারেটিং সিস্টেমে ব্যবহৃত হয়, লাইব্রেরি আربیট্রারি ডেটা একটি সিঙ্গেল কী (প্রাইমারি কী) দিয়ে ফিক্সড-সাইজ বাকেটে সংরক্ষণ করে এবং হ্যাশিং টেকনিক দিয়ে কী দিয়ে দ্রুত ডেটা রিট্রিভল সক্ষম করে।
dbm প্যাকেজে নিচের মডিউলগুলো রয়েছে:
dbm.ndbmমডিউল Unix "(n)dbm" লাইব্রেরির সাথে ইন্টারফেস দেয়। Dbm অবজেক্ট ডিকশনারির মতো বर्तাব করে, কী ও ভ্যালু বাইটস হিসেবে সংরক্ষিত হয়। এই মডিউলitems()এবংvalues()মেথড সাপোর্ট করে না।dbm.dumbমডিউল একটি পারসিস্টেন্ট ডিকশনারি-লাইক ইন্টারফেস দেয় যা সম্পূর্ণ পাইথনে লেখা। অন্য মডিউল যেমনdbm.gnuএর মতো এক্সটার্নাল লাইব্রেরি প্রয়োজন নেই। অন্যান্য পারসিস্টেন্ট ম্যাপিংয়ের মতো কী ও ভ্যালু সবসময় বাইটস হিসেবে সংরক্ষিত হয়।
এই মডিউলগুলো পাইথনের shelve মডিউল tarafından ইন্টারনালি ব্যবহার করা হয়। শেলভ ডাটাবেসের মতো ইউজার-স্পেসিফাইড ডাটাবেস নাম '.dir' পোস্টফিক্স নিয়ে। dbm অবজেক্টের whichdb() ফাংশন বলে দেয় বর্তমান পাইথন ইনস্টলেশনে কোন dbm ইমপ্লিমেন্টেশন উপলব্ধ।
>>> dbm.whichdb('mydbm.db')
'dbm.dumb'
>>> db = dbm.open('mydbm.db', 'n')
>>> db['name'] = 'Rajani Deshmukh'
>>> db['address'] = 'Shivajinagar Pune'
>>> db['PIN'] = '431001'
>>> db.close()
open() ফাংশন নিচের মোড ফ্ল্যাগগুলো সাপোর্ট করে:
| ভ্যালু | অর্থ |
|---|---|
| 'r' | বিদ্যমান ডাটাবেস রিড-অনলাই খুলুন (ডিফল্ট) |
| 'w' | বিদ্যমান ডাটাবেস রিড ও রাইটের জন্য খুলুন |
| 'c' | ডাটাবেস রিড ও রাইটের জন্য খুলুন, না থাকলে তৈরি করুন |
| 'n' | সর্বদা নতুন, খালি ডাটাবেস তৈরি করুন, রিড ও রাইটের জন্য খুলুন |
একটি dbm অবজেক্ট ডিকশনারি-লাইক অবজেক্ট, ঠিক শেলভ অবজেক্টের মতো। তাই সকল ডিকশনারি অপারেশন করা যায়। dbm অবজেক্ট get(), pop(), append() এবং update() মেথড কল করতে পারে। নিচের কোড 'mydbm.db'-কে 'r' ফ্ল্যাগ দিয়ে খুলে কী-ভ্যালু পেয়ারগুলোর ওপর ইটারেট করে:
>>> db = dbm.open('mydbm.db', 'r')
>>> for k,v in db.items():
... print(k, v)
b'name' : b'Rajani Deshmukh'
b'address' : b'Shivajinagar Pune'
b'PIN' : b'431001'
dbm অবজেক্ট নিচের মেথডগুলোও প্রদান করে:
- sync(): অন-ডিস্ক ডিরেক্টরি ও ডেটা ফাইল সিঙ্ক্রোনাইজ করুন। এই মেথড
Shelve.sync()দ্বারা কল করা হয়। - close(): dbm ডাটাবেস বন্ধ করুন।
gnu dbm অবজেক্টের অতিরিক্ত মেথড:
- firstkey(): এই মেথড এবং
nextkey()দিয়ে ডাটাবেসের সব কীতে লুপ করা যায়। এই মেথড শুরুর কী রিটার্ন করে। - gdbm.nextkey(key): ট্রাভার্সালে key-এর পরের কী রিটার্ন করে।
- gdbm.reorganize(): ডাটাবেস রি-অর্গানাইজ করুন। gnu dbm অবজেক্ট ডাটাবেস ফাইলের দৈর্ঘ্য সংক্ষিপ্ত করবে না এই রি-অর্গানাইজেশন ছাড়া; অন্যথায় ডিলিটেড ফাইল স্পেস রাখা থাকবে এবং নতুন (কী, ভ্যালু) পেয়ার যোগ হলে পুনরুপযোগ হবে।