Python - Database Manager (dbm) package - GeeksforGeeks

14 Aug, 2021
In this article we will learn about dbm, a package in built-in library of python. dbm package in python provides a simple dictionary like interface of the form DBM (DataBase Manager) generally used in Unix operating system. dbm stores data in simple key – value pair form like a dictionary which makes it easier to insert, edit and retrieve data from database. It stores data by the use of a single primary key (“key”) in fixed size blocks. 
There are three types of sub modules in dbm package :
dbm.gnu: GNU’s reinterpretation of dbmdbm.ndbm: Interface based on ndbmdbm.dumb: Portable DBM implementation
dbm.gnu: GNU’s reinterpretation of dbm
dbm.ndbm: Interface based on ndbm
dbm.dumb: Portable DBM implementation
Following are the main functions available in dbm package :
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.
‘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. 
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 :
items(): This method returns the items contained in the database of caller object in form of key value pairs. (db is the caller object database).
clear(): clear all the values present in the database.
get(key): returns the value corresponding to key given in argument.
keys(), iterkeys(): returns an iterable list containing keys of the dictionary.
pop(key): Deletes / pops the key, value pair corresponding to key given in argument.
setdefault(): set a default primary key given in the argument.
sync(): Helps to synchronize data files and on disk directory.
update(): updates the existing key value. Just like dictionary object.
values(): iterate through all the values present in database.
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 discuss methods/functions:
Code:
Python3
# importing the dbm packageimport 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() # poping 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' 
varshagumber28
python-utility
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to Install PIP on Windows ?
How To Convert Python Dictionary To JSON?
Check if element exists in list in Python
How to drop one or multiple columns in Pandas Dataframe
Python Classes and Objects
Python | os.path.join() method
Python | Get unique values from a list
Create a directory in Python
Defaultdict in Python
Python | Pandas dataframe.groupby()