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 :
- dbm.gnu: GNU’s reinterpretation of dbm
- dbm.ndbm: Interface based on ndbm
- 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' ] = 'Lazyroar' 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'Lazyroar' b'Lazyroar' b'8888' b'GfG' b'01/01/2000' b'Lazyroar' b'8888' b'GfG' b'01/01/2000' b'name' b'Lazyroar' b'Short name' b'GfG' b'Date' b'01/01/2000'