Python - Database Manager (dbm) package
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:
# 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'