mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""Generic interface to all dbm clones.
 | 
						|
 | 
						|
Instead of
 | 
						|
 | 
						|
	import dbm
 | 
						|
	d = dbm.open(file, 'w', 0666)
 | 
						|
 | 
						|
use
 | 
						|
 | 
						|
	import anydbm
 | 
						|
	d = anydbm.open(file)
 | 
						|
 | 
						|
The returned object is a dbhash, gdbm, dbm or dumbdbm object,
 | 
						|
dependent on availability of the modules (tested in this order).
 | 
						|
 | 
						|
It has the following interface (key and data are strings):
 | 
						|
 | 
						|
	d[key] = data	# store data at key (may override data at
 | 
						|
			# existing key)
 | 
						|
	data = d[key]	# retrieve data at key (raise KeyError if no
 | 
						|
			# such key)
 | 
						|
	del d[key]	# delete data stored at key (raises KeyError
 | 
						|
			# if no such key)
 | 
						|
	flag = d.has_key(key)	# true if the key exists
 | 
						|
	list = d.keys()	# return a list of all existing keys (slow!)
 | 
						|
 | 
						|
Future versions may change the order in which implementations are
 | 
						|
tested for existence, add interfaces to other dbm-like
 | 
						|
implementations, and (in the presence of multiple implementations)
 | 
						|
decide which module to use based upon the extension or contents of an
 | 
						|
existing database file.
 | 
						|
 | 
						|
The open function has an optional second argument.  This can be set to
 | 
						|
'r' to open the database for reading only.  The default is 'r', like
 | 
						|
the dbm default.
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
_names = ['dbhash', 'gdbm', 'dbm', 'dumbdbm']
 | 
						|
 | 
						|
for _name in _names:
 | 
						|
	try:
 | 
						|
		exec "import %s; _mod = %s" % (_name, _name)
 | 
						|
	except ImportError:
 | 
						|
		continue
 | 
						|
	else:
 | 
						|
		break
 | 
						|
else:
 | 
						|
	raise ImportError, "no dbm clone found; tried %s" % _names
 | 
						|
 | 
						|
error = _mod.error
 | 
						|
 | 
						|
def open(file, flag = 'r', mode = 0666):
 | 
						|
	return _mod.open(file, flag, mode)
 |