Open In App

Python – Database Manager (dbm) package

Last Updated : 18 May, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will learn about dbm, a package in the built-in library of Python. The dbm package in Python provides a simple dictionary-like interface of the form DBM (DataBase Manager) generally used in the Unix operating system. dbm stores data in simple key-value pair form like a dictionary, making it easier to insert, edit and retrieve data from the database. It stores data using a single primary key (“key”) in fixed-size blocks. 

There are three types of submodules in dbm package :

  1. dbm.gnu: GNU’s reinterpretation of dbm
  2. dbm.ndbm: Interface based on ndbm
  3. dbm.dumb: Portable DBM implementation

The following are the main functions available in dbm package :

dbm.open()

This function is used to open a dbm database or create a new database if not exist.

Syntax: dbm.open(file, flag=’r’, mode=0o666)

Parameters: This function take following parameters: 

  • file: name of the file.
  • flag: mode of permissions. which can be ‘r’, ‘w’, ‘c’, or ‘n’.
    • ‘r’: open the existing database with permission to read only.
    • ‘w’: open the existing database with permission to read and write.
    • ‘c’: open the database for read and write, also create a new one if it doesn’t exists.
    • ‘n’: Always create a new database with permission to both read and write.
  • mode: The Unix mode of the argument which is a octal form default set to 0o666, used only when new database is to be created.

Return: The corresponding object address of the database file. 

dbm.whichdb()

This function attempts to guess which of the several simple database modules available- dbm.gnu, dbm.ndbm, or dbm.dumb- should be used to open a given file.

Syntax: dbm.whichdb(filename) 

Parameter: filename- Name of the file.

Returns: The function returns one of the following values :

  • None: If the database doesn’t exists or it can’t be opened.
  • (‘ ‘): An empty string, if the file exists but the file format can’t be guessed else
  • The required module name: If the type is successfully detected then one of the string names is returned, ‘dbm.gnu’, ‘dbm.ndbm’ or ‘dbm.dumb’.

Following are the built-in methods for dbm objects :

  • open(filename): This method will open the file of the database whose name is passed as the parameter.
  • whichdb(filename): Returns the database module used to open the file provided as parameters.
  • get(key): Returns the value corresponding to key given in argument.
  • keys(): Returns an iterable list containing keys of the dictionary.
  • firstkey(): It returns the starrting key.
  • nextkey(key): It returns the key that is next to the current key which is passed as arguments.
  • setdefault(): set a default primary key given in the argument.
  • reorganize(): Reorganises the databse to increase space y compacting the data.
  • error(): A tuple conatining exceptions that are raised when some error is occured while executing dbm module.
  • sync(): Helps to synchronize data files and on disk directory.
  • close(): Doesn’t take any argument nor returns anything. Just closes the caller object database. (db in this case)

Below is the implementation of all the above-discussed methods/functions:

Code:

Python3




# importing the dbm package
import dbm
 
# using the open function
# to create a new database named
# 'mydb' in 'n' mode, object
# returned in db variable.
db = dbm.open('mydb','n')
 
# inserting the new key and
# values in the database.
db['name'] = 'GeeksforGeeks'
db['phone'] = '8888'
db['Short name'] = 'GfG'
db['Date'] = '01/01/2000'
 
# getting and printing
# the value through get method.
print(db.get('name'))
print()
 
# printing the values of
# database through values()
# method (iterator).
for value in db.values():
    print(value)
print()
 
# printing the values through
# key iterator.
for key in db.keys():
    print(db.get(key))
print()
 
# popping out the key, value
# pair corresponding to
# 'phone' key.
db.pop('phone')
 
# printing the key, value
# pairs present in database.
for key, value in db.items():
    print(key, value)
 
# clearing all the key values
# in database.
db.clear()
 
# Below loop will print nothing
# as database is cleared above.
for key, value in db.items():
    print(key, value)
 
# closing the database.
db.close()
 
# This code is contributed by Amit Mangal.


Output :

b'GeeksforGeeks'

b'GeeksforGeeks'
b'8888'
b'GfG'
b'01/01/2000'

b'GeeksforGeeks'
b'8888'
b'GfG'
b'01/01/2000'

b'name' b'GeeksforGeeks'
b'Short name' b'GfG'
b'Date' b'01/01/2000' 


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads