Gói dbm trong thư viện tích hợp của Python cung cấp giao diện giống từ điển (dictionary-like) cho cơ sở dữ liệu kiểu DBM. Thư viện dbm là một công cụ database đơn giản, viết bởi Ken Thompson. DBM là viết tắt của DataBase Manager, dùng bởi hệ điều hành UNIX, thư viện lưu trữ dữ liệu tùy ý bằng cách dùng một khóa duy nhất (khóa chính) trong các bucket kích thước cố định và dùng kỹ thuật hashing để truy xuất nhanh dữ liệu theo khóa.
Có các module sau trong gói dbm:
Module dbm.ndbm cung cấp giao diện cho thư viện Unix "(n)dbm". Đối tượng Dbm hành xử như từ điển, khóa và giá trị nên lưu dưới dạng bytes. Module không hỗ trợ phương thức items() và values().
Module dbm.dumb cung cấp giao diện từ điển bền vững (persistent dictionary-like) viết hoàn toàn bằng Python. Khác với các module như dbm.gnu, không cần thư viện bên ngoài. Giống các ánh xạ bền vững khác, khóa và giá trị luôn lưu dưới dạng bytes.
Các module này được dùng nội bộ bởi module shelve của Python. Giống như shelve database, tên database do người dùng chỉ định mang hậu tố '.dir'. Hàm whichdb() của đối tượng dbm cho biết triển khai dbm nào có sẵn trên cài đặt Python hiện tại.
>>> 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()
Hàm open() cho phép các cờ mode sau:
| Giá trị | Ý nghĩa |
|---|---|
| 'r' | Mở database hiện có chỉ để đọc (mặc định) |
| 'w' | Mở database hiện có để đọc và ghi |
| 'c' | Mở database để đọc và ghi, tạo mới nếu chưa tồn tại |
| 'n' | Luôn tạo database mới rỗng, mở để đọc và ghi |
Đối tượng dbm là đối tượng giống từ điển, giống như đối tượng shelf. Do đó mọi phép toán từ điển đều thực hiện được. Đối tượng dbm có thể gọi phương thức get(), pop(), append() và update(). Mã sau mở 'mydbm.db' với cờ 'r' và lặp qua tập cặp khóa-giá trị.
>>> 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'
Đối tượng dbm cũng cung cấp các phương thức sau:
sync(): Đồng bộ thư mục trên đĩa và file dữ liệu. Phương thức này được gọi bởi Shelve.sync().
close(): Đóng database dbm.
Đối tượng gnu dbm có các phương thức sau:
firstkey()
Có thể lặp qua mọi khóa trong database dùng phương thức này và nextkey(). Phương thức này trả về khóa bắt đầu.
gdbm.nextkey(key): Trả về khóa tiếp theo theo key trong duyệt.
gdbm.reorganize(): Hàm này tổ chức lại database. Đối tượng gnu dbm không rút ngắn độ dài file database trừ khi dùng tổ chức lại này; ngược lại, không gian file đã xóa sẽ được giữ và tái sử dụng khi cặp (khóa, giá trị) mới được thêm.