17db96d56Sopenharmony_ci:mod:`dbm` --- Interfaces to Unix "databases" 27db96d56Sopenharmony_ci============================================= 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: dbm 57db96d56Sopenharmony_ci :synopsis: Interfaces to various Unix "database" formats. 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ci**Source code:** :source:`Lib/dbm/__init__.py` 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci-------------- 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci:mod:`dbm` is a generic interface to variants of the DBM database --- 127db96d56Sopenharmony_ci:mod:`dbm.gnu` or :mod:`dbm.ndbm`. If none of these modules is installed, the 137db96d56Sopenharmony_cislow-but-simple implementation in module :mod:`dbm.dumb` will be used. There 147db96d56Sopenharmony_ciis a `third party interface <https://www.jcea.es/programacion/pybsddb.htm>`_ to 157db96d56Sopenharmony_cithe Oracle Berkeley DB. 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ci.. exception:: error 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci A tuple containing the exceptions that can be raised by each of the supported 217db96d56Sopenharmony_ci modules, with a unique exception also named :exc:`dbm.error` as the first 227db96d56Sopenharmony_ci item --- the latter is used when :exc:`dbm.error` is raised. 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci.. function:: whichdb(filename) 267db96d56Sopenharmony_ci 277db96d56Sopenharmony_ci This function attempts to guess which of the several simple database modules 287db96d56Sopenharmony_ci available --- :mod:`dbm.gnu`, :mod:`dbm.ndbm` or :mod:`dbm.dumb` --- should 297db96d56Sopenharmony_ci be used to open a given file. 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci Returns one of the following values: ``None`` if the file can't be opened 327db96d56Sopenharmony_ci because it's unreadable or doesn't exist; the empty string (``''``) if the 337db96d56Sopenharmony_ci file's format can't be guessed; or a string containing the required module 347db96d56Sopenharmony_ci name, such as ``'dbm.ndbm'`` or ``'dbm.gnu'``. 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci.. versionchanged:: 3.11 377db96d56Sopenharmony_ci Accepts :term:`path-like object` for filename. 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci.. function:: open(file, flag='r', mode=0o666) 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci Open the database file *file* and return a corresponding object. 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci If the database file already exists, the :func:`whichdb` function is used to 447db96d56Sopenharmony_ci determine its type and the appropriate module is used; if it does not exist, 457db96d56Sopenharmony_ci the first module listed above that can be imported is used. 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci The optional *flag* argument can be: 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ci +---------+-------------------------------------------+ 507db96d56Sopenharmony_ci | Value | Meaning | 517db96d56Sopenharmony_ci +=========+===========================================+ 527db96d56Sopenharmony_ci | ``'r'`` | Open existing database for reading only | 537db96d56Sopenharmony_ci | | (default) | 547db96d56Sopenharmony_ci +---------+-------------------------------------------+ 557db96d56Sopenharmony_ci | ``'w'`` | Open existing database for reading and | 567db96d56Sopenharmony_ci | | writing | 577db96d56Sopenharmony_ci +---------+-------------------------------------------+ 587db96d56Sopenharmony_ci | ``'c'`` | Open database for reading and writing, | 597db96d56Sopenharmony_ci | | creating it if it doesn't exist | 607db96d56Sopenharmony_ci +---------+-------------------------------------------+ 617db96d56Sopenharmony_ci | ``'n'`` | Always create a new, empty database, open | 627db96d56Sopenharmony_ci | | for reading and writing | 637db96d56Sopenharmony_ci +---------+-------------------------------------------+ 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ci The optional *mode* argument is the Unix mode of the file, used only when the 667db96d56Sopenharmony_ci database has to be created. It defaults to octal ``0o666`` (and will be 677db96d56Sopenharmony_ci modified by the prevailing umask). 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ci 707db96d56Sopenharmony_ciThe object returned by :func:`.open` supports the same basic functionality as 717db96d56Sopenharmony_cidictionaries; keys and their corresponding values can be stored, retrieved, and 727db96d56Sopenharmony_cideleted, and the :keyword:`in` operator and the :meth:`keys` method are 737db96d56Sopenharmony_ciavailable, as well as :meth:`get` and :meth:`setdefault`. 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ci.. versionchanged:: 3.2 767db96d56Sopenharmony_ci :meth:`get` and :meth:`setdefault` are now available in all database modules. 777db96d56Sopenharmony_ci 787db96d56Sopenharmony_ci.. versionchanged:: 3.8 797db96d56Sopenharmony_ci Deleting a key from a read-only database raises database module specific error 807db96d56Sopenharmony_ci instead of :exc:`KeyError`. 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_ci.. versionchanged:: 3.11 837db96d56Sopenharmony_ci Accepts :term:`path-like object` for file. 847db96d56Sopenharmony_ci 857db96d56Sopenharmony_ciKey and values are always stored as bytes. This means that when 867db96d56Sopenharmony_cistrings are used they are implicitly converted to the default encoding before 877db96d56Sopenharmony_cibeing stored. 887db96d56Sopenharmony_ci 897db96d56Sopenharmony_ciThese objects also support being used in a :keyword:`with` statement, which 907db96d56Sopenharmony_ciwill automatically close them when done. 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_ci.. versionchanged:: 3.4 937db96d56Sopenharmony_ci Added native support for the context management protocol to the objects 947db96d56Sopenharmony_ci returned by :func:`.open`. 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_ciThe following example records some hostnames and a corresponding title, and 977db96d56Sopenharmony_cithen prints out the contents of the database:: 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci import dbm 1007db96d56Sopenharmony_ci 1017db96d56Sopenharmony_ci # Open database, creating it if necessary. 1027db96d56Sopenharmony_ci with dbm.open('cache', 'c') as db: 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_ci # Record some values 1057db96d56Sopenharmony_ci db[b'hello'] = b'there' 1067db96d56Sopenharmony_ci db['www.python.org'] = 'Python Website' 1077db96d56Sopenharmony_ci db['www.cnn.com'] = 'Cable News Network' 1087db96d56Sopenharmony_ci 1097db96d56Sopenharmony_ci # Note that the keys are considered bytes now. 1107db96d56Sopenharmony_ci assert db[b'www.python.org'] == b'Python Website' 1117db96d56Sopenharmony_ci # Notice how the value is now in bytes. 1127db96d56Sopenharmony_ci assert db['www.cnn.com'] == b'Cable News Network' 1137db96d56Sopenharmony_ci 1147db96d56Sopenharmony_ci # Often-used methods of the dict interface work too. 1157db96d56Sopenharmony_ci print(db.get('python.org', b'not present')) 1167db96d56Sopenharmony_ci 1177db96d56Sopenharmony_ci # Storing a non-string key or value will raise an exception (most 1187db96d56Sopenharmony_ci # likely a TypeError). 1197db96d56Sopenharmony_ci db['www.yahoo.com'] = 4 1207db96d56Sopenharmony_ci 1217db96d56Sopenharmony_ci # db is automatically closed when leaving the with statement. 1227db96d56Sopenharmony_ci 1237db96d56Sopenharmony_ci 1247db96d56Sopenharmony_ci.. seealso:: 1257db96d56Sopenharmony_ci 1267db96d56Sopenharmony_ci Module :mod:`shelve` 1277db96d56Sopenharmony_ci Persistence module which stores non-string data. 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_ci 1307db96d56Sopenharmony_ciThe individual submodules are described in the following sections. 1317db96d56Sopenharmony_ci 1327db96d56Sopenharmony_ci 1337db96d56Sopenharmony_ci:mod:`dbm.gnu` --- GNU's reinterpretation of dbm 1347db96d56Sopenharmony_ci------------------------------------------------ 1357db96d56Sopenharmony_ci 1367db96d56Sopenharmony_ci.. module:: dbm.gnu 1377db96d56Sopenharmony_ci :platform: Unix 1387db96d56Sopenharmony_ci :synopsis: GNU's reinterpretation of dbm. 1397db96d56Sopenharmony_ci 1407db96d56Sopenharmony_ci**Source code:** :source:`Lib/dbm/gnu.py` 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci-------------- 1437db96d56Sopenharmony_ci 1447db96d56Sopenharmony_ciThis module is quite similar to the :mod:`dbm` module, but uses the GNU library 1457db96d56Sopenharmony_ci``gdbm`` instead to provide some additional functionality. Please note that the 1467db96d56Sopenharmony_cifile formats created by :mod:`dbm.gnu` and :mod:`dbm.ndbm` are incompatible. 1477db96d56Sopenharmony_ci 1487db96d56Sopenharmony_ciThe :mod:`dbm.gnu` module provides an interface to the GNU DBM library. 1497db96d56Sopenharmony_ci``dbm.gnu.gdbm`` objects behave like mappings (dictionaries), except that keys and 1507db96d56Sopenharmony_civalues are always converted to bytes before storing. Printing a ``gdbm`` 1517db96d56Sopenharmony_ciobject doesn't print the 1527db96d56Sopenharmony_cikeys and values, and the :meth:`items` and :meth:`values` methods are not 1537db96d56Sopenharmony_cisupported. 1547db96d56Sopenharmony_ci 1557db96d56Sopenharmony_ci.. exception:: error 1567db96d56Sopenharmony_ci 1577db96d56Sopenharmony_ci Raised on :mod:`dbm.gnu`-specific errors, such as I/O errors. :exc:`KeyError` is 1587db96d56Sopenharmony_ci raised for general mapping errors like specifying an incorrect key. 1597db96d56Sopenharmony_ci 1607db96d56Sopenharmony_ci 1617db96d56Sopenharmony_ci.. function:: open(filename[, flag[, mode]]) 1627db96d56Sopenharmony_ci 1637db96d56Sopenharmony_ci Open a ``gdbm`` database and return a :class:`gdbm` object. The *filename* 1647db96d56Sopenharmony_ci argument is the name of the database file. 1657db96d56Sopenharmony_ci 1667db96d56Sopenharmony_ci The optional *flag* argument can be: 1677db96d56Sopenharmony_ci 1687db96d56Sopenharmony_ci +---------+-------------------------------------------+ 1697db96d56Sopenharmony_ci | Value | Meaning | 1707db96d56Sopenharmony_ci +=========+===========================================+ 1717db96d56Sopenharmony_ci | ``'r'`` | Open existing database for reading only | 1727db96d56Sopenharmony_ci | | (default) | 1737db96d56Sopenharmony_ci +---------+-------------------------------------------+ 1747db96d56Sopenharmony_ci | ``'w'`` | Open existing database for reading and | 1757db96d56Sopenharmony_ci | | writing | 1767db96d56Sopenharmony_ci +---------+-------------------------------------------+ 1777db96d56Sopenharmony_ci | ``'c'`` | Open database for reading and writing, | 1787db96d56Sopenharmony_ci | | creating it if it doesn't exist | 1797db96d56Sopenharmony_ci +---------+-------------------------------------------+ 1807db96d56Sopenharmony_ci | ``'n'`` | Always create a new, empty database, open | 1817db96d56Sopenharmony_ci | | for reading and writing | 1827db96d56Sopenharmony_ci +---------+-------------------------------------------+ 1837db96d56Sopenharmony_ci 1847db96d56Sopenharmony_ci The following additional characters may be appended to the flag to control 1857db96d56Sopenharmony_ci how the database is opened: 1867db96d56Sopenharmony_ci 1877db96d56Sopenharmony_ci +---------+--------------------------------------------+ 1887db96d56Sopenharmony_ci | Value | Meaning | 1897db96d56Sopenharmony_ci +=========+============================================+ 1907db96d56Sopenharmony_ci | ``'f'`` | Open the database in fast mode. Writes | 1917db96d56Sopenharmony_ci | | to the database will not be synchronized. | 1927db96d56Sopenharmony_ci +---------+--------------------------------------------+ 1937db96d56Sopenharmony_ci | ``'s'`` | Synchronized mode. This will cause changes | 1947db96d56Sopenharmony_ci | | to the database to be immediately written | 1957db96d56Sopenharmony_ci | | to the file. | 1967db96d56Sopenharmony_ci +---------+--------------------------------------------+ 1977db96d56Sopenharmony_ci | ``'u'`` | Do not lock database. | 1987db96d56Sopenharmony_ci +---------+--------------------------------------------+ 1997db96d56Sopenharmony_ci 2007db96d56Sopenharmony_ci Not all flags are valid for all versions of ``gdbm``. The module constant 2017db96d56Sopenharmony_ci :const:`open_flags` is a string of supported flag characters. The exception 2027db96d56Sopenharmony_ci :exc:`error` is raised if an invalid flag is specified. 2037db96d56Sopenharmony_ci 2047db96d56Sopenharmony_ci The optional *mode* argument is the Unix mode of the file, used only when the 2057db96d56Sopenharmony_ci database has to be created. It defaults to octal ``0o666``. 2067db96d56Sopenharmony_ci 2077db96d56Sopenharmony_ci In addition to the dictionary-like methods, ``gdbm`` objects have the 2087db96d56Sopenharmony_ci following methods: 2097db96d56Sopenharmony_ci 2107db96d56Sopenharmony_ci .. versionchanged:: 3.11 2117db96d56Sopenharmony_ci Accepts :term:`path-like object` for filename. 2127db96d56Sopenharmony_ci 2137db96d56Sopenharmony_ci .. method:: gdbm.firstkey() 2147db96d56Sopenharmony_ci 2157db96d56Sopenharmony_ci It's possible to loop over every key in the database using this method and the 2167db96d56Sopenharmony_ci :meth:`nextkey` method. The traversal is ordered by ``gdbm``'s internal 2177db96d56Sopenharmony_ci hash values, and won't be sorted by the key values. This method returns 2187db96d56Sopenharmony_ci the starting key. 2197db96d56Sopenharmony_ci 2207db96d56Sopenharmony_ci .. method:: gdbm.nextkey(key) 2217db96d56Sopenharmony_ci 2227db96d56Sopenharmony_ci Returns the key that follows *key* in the traversal. The following code prints 2237db96d56Sopenharmony_ci every key in the database ``db``, without having to create a list in memory that 2247db96d56Sopenharmony_ci contains them all:: 2257db96d56Sopenharmony_ci 2267db96d56Sopenharmony_ci k = db.firstkey() 2277db96d56Sopenharmony_ci while k is not None: 2287db96d56Sopenharmony_ci print(k) 2297db96d56Sopenharmony_ci k = db.nextkey(k) 2307db96d56Sopenharmony_ci 2317db96d56Sopenharmony_ci .. method:: gdbm.reorganize() 2327db96d56Sopenharmony_ci 2337db96d56Sopenharmony_ci If you have carried out a lot of deletions and would like to shrink the space 2347db96d56Sopenharmony_ci used by the ``gdbm`` file, this routine will reorganize the database. ``gdbm`` 2357db96d56Sopenharmony_ci objects will not shorten the length of a database file except by using this 2367db96d56Sopenharmony_ci reorganization; otherwise, deleted file space will be kept and reused as new 2377db96d56Sopenharmony_ci (key, value) pairs are added. 2387db96d56Sopenharmony_ci 2397db96d56Sopenharmony_ci .. method:: gdbm.sync() 2407db96d56Sopenharmony_ci 2417db96d56Sopenharmony_ci When the database has been opened in fast mode, this method forces any 2427db96d56Sopenharmony_ci unwritten data to be written to the disk. 2437db96d56Sopenharmony_ci 2447db96d56Sopenharmony_ci .. method:: gdbm.close() 2457db96d56Sopenharmony_ci 2467db96d56Sopenharmony_ci Close the ``gdbm`` database. 2477db96d56Sopenharmony_ci 2487db96d56Sopenharmony_ci:mod:`dbm.ndbm` --- Interface based on ndbm 2497db96d56Sopenharmony_ci------------------------------------------- 2507db96d56Sopenharmony_ci 2517db96d56Sopenharmony_ci.. module:: dbm.ndbm 2527db96d56Sopenharmony_ci :platform: Unix 2537db96d56Sopenharmony_ci :synopsis: The standard "database" interface, based on ndbm. 2547db96d56Sopenharmony_ci 2557db96d56Sopenharmony_ci**Source code:** :source:`Lib/dbm/ndbm.py` 2567db96d56Sopenharmony_ci 2577db96d56Sopenharmony_ci-------------- 2587db96d56Sopenharmony_ci 2597db96d56Sopenharmony_ciThe :mod:`dbm.ndbm` module provides an interface to the Unix "(n)dbm" library. 2607db96d56Sopenharmony_ciDbm objects behave like mappings (dictionaries), except that keys and values are 2617db96d56Sopenharmony_cialways stored as bytes. Printing a ``dbm`` object doesn't print the keys and 2627db96d56Sopenharmony_civalues, and the :meth:`items` and :meth:`values` methods are not supported. 2637db96d56Sopenharmony_ci 2647db96d56Sopenharmony_ciThis module can be used with the "classic" ndbm interface or the GNU GDBM 2657db96d56Sopenharmony_cicompatibility interface. On Unix, the :program:`configure` script will attempt 2667db96d56Sopenharmony_cito locate the appropriate header file to simplify building this module. 2677db96d56Sopenharmony_ci 2687db96d56Sopenharmony_ci.. exception:: error 2697db96d56Sopenharmony_ci 2707db96d56Sopenharmony_ci Raised on :mod:`dbm.ndbm`-specific errors, such as I/O errors. :exc:`KeyError` is raised 2717db96d56Sopenharmony_ci for general mapping errors like specifying an incorrect key. 2727db96d56Sopenharmony_ci 2737db96d56Sopenharmony_ci 2747db96d56Sopenharmony_ci.. data:: library 2757db96d56Sopenharmony_ci 2767db96d56Sopenharmony_ci Name of the ``ndbm`` implementation library used. 2777db96d56Sopenharmony_ci 2787db96d56Sopenharmony_ci 2797db96d56Sopenharmony_ci.. function:: open(filename[, flag[, mode]]) 2807db96d56Sopenharmony_ci 2817db96d56Sopenharmony_ci Open a dbm database and return a ``ndbm`` object. The *filename* argument is the 2827db96d56Sopenharmony_ci name of the database file (without the :file:`.dir` or :file:`.pag` extensions). 2837db96d56Sopenharmony_ci 2847db96d56Sopenharmony_ci The optional *flag* argument must be one of these values: 2857db96d56Sopenharmony_ci 2867db96d56Sopenharmony_ci +---------+-------------------------------------------+ 2877db96d56Sopenharmony_ci | Value | Meaning | 2887db96d56Sopenharmony_ci +=========+===========================================+ 2897db96d56Sopenharmony_ci | ``'r'`` | Open existing database for reading only | 2907db96d56Sopenharmony_ci | | (default) | 2917db96d56Sopenharmony_ci +---------+-------------------------------------------+ 2927db96d56Sopenharmony_ci | ``'w'`` | Open existing database for reading and | 2937db96d56Sopenharmony_ci | | writing | 2947db96d56Sopenharmony_ci +---------+-------------------------------------------+ 2957db96d56Sopenharmony_ci | ``'c'`` | Open database for reading and writing, | 2967db96d56Sopenharmony_ci | | creating it if it doesn't exist | 2977db96d56Sopenharmony_ci +---------+-------------------------------------------+ 2987db96d56Sopenharmony_ci | ``'n'`` | Always create a new, empty database, open | 2997db96d56Sopenharmony_ci | | for reading and writing | 3007db96d56Sopenharmony_ci +---------+-------------------------------------------+ 3017db96d56Sopenharmony_ci 3027db96d56Sopenharmony_ci The optional *mode* argument is the Unix mode of the file, used only when the 3037db96d56Sopenharmony_ci database has to be created. It defaults to octal ``0o666`` (and will be 3047db96d56Sopenharmony_ci modified by the prevailing umask). 3057db96d56Sopenharmony_ci 3067db96d56Sopenharmony_ci In addition to the dictionary-like methods, ``ndbm`` objects 3077db96d56Sopenharmony_ci provide the following method: 3087db96d56Sopenharmony_ci 3097db96d56Sopenharmony_ci .. versionchanged:: 3.11 3107db96d56Sopenharmony_ci Accepts :term:`path-like object` for filename. 3117db96d56Sopenharmony_ci 3127db96d56Sopenharmony_ci .. method:: ndbm.close() 3137db96d56Sopenharmony_ci 3147db96d56Sopenharmony_ci Close the ``ndbm`` database. 3157db96d56Sopenharmony_ci 3167db96d56Sopenharmony_ci 3177db96d56Sopenharmony_ci:mod:`dbm.dumb` --- Portable DBM implementation 3187db96d56Sopenharmony_ci----------------------------------------------- 3197db96d56Sopenharmony_ci 3207db96d56Sopenharmony_ci.. module:: dbm.dumb 3217db96d56Sopenharmony_ci :synopsis: Portable implementation of the simple DBM interface. 3227db96d56Sopenharmony_ci 3237db96d56Sopenharmony_ci**Source code:** :source:`Lib/dbm/dumb.py` 3247db96d56Sopenharmony_ci 3257db96d56Sopenharmony_ci.. index:: single: databases 3267db96d56Sopenharmony_ci 3277db96d56Sopenharmony_ci.. note:: 3287db96d56Sopenharmony_ci 3297db96d56Sopenharmony_ci The :mod:`dbm.dumb` module is intended as a last resort fallback for the 3307db96d56Sopenharmony_ci :mod:`dbm` module when a more robust module is not available. The :mod:`dbm.dumb` 3317db96d56Sopenharmony_ci module is not written for speed and is not nearly as heavily used as the other 3327db96d56Sopenharmony_ci database modules. 3337db96d56Sopenharmony_ci 3347db96d56Sopenharmony_ci-------------- 3357db96d56Sopenharmony_ci 3367db96d56Sopenharmony_ciThe :mod:`dbm.dumb` module provides a persistent dictionary-like interface which 3377db96d56Sopenharmony_ciis written entirely in Python. Unlike other modules such as :mod:`dbm.gnu` no 3387db96d56Sopenharmony_ciexternal library is required. As with other persistent mappings, the keys and 3397db96d56Sopenharmony_civalues are always stored as bytes. 3407db96d56Sopenharmony_ci 3417db96d56Sopenharmony_ciThe module defines the following: 3427db96d56Sopenharmony_ci 3437db96d56Sopenharmony_ci 3447db96d56Sopenharmony_ci.. exception:: error 3457db96d56Sopenharmony_ci 3467db96d56Sopenharmony_ci Raised on :mod:`dbm.dumb`-specific errors, such as I/O errors. :exc:`KeyError` is 3477db96d56Sopenharmony_ci raised for general mapping errors like specifying an incorrect key. 3487db96d56Sopenharmony_ci 3497db96d56Sopenharmony_ci 3507db96d56Sopenharmony_ci.. function:: open(filename[, flag[, mode]]) 3517db96d56Sopenharmony_ci 3527db96d56Sopenharmony_ci Open a ``dumbdbm`` database and return a dumbdbm object. The *filename* argument is 3537db96d56Sopenharmony_ci the basename of the database file (without any specific extensions). When a 3547db96d56Sopenharmony_ci dumbdbm database is created, files with :file:`.dat` and :file:`.dir` extensions 3557db96d56Sopenharmony_ci are created. 3567db96d56Sopenharmony_ci 3577db96d56Sopenharmony_ci The optional *flag* argument can be: 3587db96d56Sopenharmony_ci 3597db96d56Sopenharmony_ci +---------+-------------------------------------------+ 3607db96d56Sopenharmony_ci | Value | Meaning | 3617db96d56Sopenharmony_ci +=========+===========================================+ 3627db96d56Sopenharmony_ci | ``'r'`` | Open existing database for reading only | 3637db96d56Sopenharmony_ci | | (default) | 3647db96d56Sopenharmony_ci +---------+-------------------------------------------+ 3657db96d56Sopenharmony_ci | ``'w'`` | Open existing database for reading and | 3667db96d56Sopenharmony_ci | | writing | 3677db96d56Sopenharmony_ci +---------+-------------------------------------------+ 3687db96d56Sopenharmony_ci | ``'c'`` | Open database for reading and writing, | 3697db96d56Sopenharmony_ci | | creating it if it doesn't exist | 3707db96d56Sopenharmony_ci +---------+-------------------------------------------+ 3717db96d56Sopenharmony_ci | ``'n'`` | Always create a new, empty database, open | 3727db96d56Sopenharmony_ci | | for reading and writing | 3737db96d56Sopenharmony_ci +---------+-------------------------------------------+ 3747db96d56Sopenharmony_ci 3757db96d56Sopenharmony_ci The optional *mode* argument is the Unix mode of the file, used only when the 3767db96d56Sopenharmony_ci database has to be created. It defaults to octal ``0o666`` (and will be modified 3777db96d56Sopenharmony_ci by the prevailing umask). 3787db96d56Sopenharmony_ci 3797db96d56Sopenharmony_ci .. warning:: 3807db96d56Sopenharmony_ci It is possible to crash the Python interpreter when loading a database 3817db96d56Sopenharmony_ci with a sufficiently large/complex entry due to stack depth limitations in 3827db96d56Sopenharmony_ci Python's AST compiler. 3837db96d56Sopenharmony_ci 3847db96d56Sopenharmony_ci .. versionchanged:: 3.5 3857db96d56Sopenharmony_ci :func:`.open` always creates a new database when the flag has the value 3867db96d56Sopenharmony_ci ``'n'``. 3877db96d56Sopenharmony_ci 3887db96d56Sopenharmony_ci .. versionchanged:: 3.8 3897db96d56Sopenharmony_ci A database opened with flags ``'r'`` is now read-only. Opening with 3907db96d56Sopenharmony_ci flags ``'r'`` and ``'w'`` no longer creates a database if it does not 3917db96d56Sopenharmony_ci exist. 3927db96d56Sopenharmony_ci 3937db96d56Sopenharmony_ci .. versionchanged:: 3.11 3947db96d56Sopenharmony_ci Accepts :term:`path-like object` for filename. 3957db96d56Sopenharmony_ci 3967db96d56Sopenharmony_ci In addition to the methods provided by the 3977db96d56Sopenharmony_ci :class:`collections.abc.MutableMapping` class, :class:`dumbdbm` objects 3987db96d56Sopenharmony_ci provide the following methods: 3997db96d56Sopenharmony_ci 4007db96d56Sopenharmony_ci .. method:: dumbdbm.sync() 4017db96d56Sopenharmony_ci 4027db96d56Sopenharmony_ci Synchronize the on-disk directory and data files. This method is called 4037db96d56Sopenharmony_ci by the :meth:`Shelve.sync` method. 4047db96d56Sopenharmony_ci 4057db96d56Sopenharmony_ci .. method:: dumbdbm.close() 4067db96d56Sopenharmony_ci 4077db96d56Sopenharmony_ci Close the ``dumbdbm`` database. 4087db96d56Sopenharmony_ci 409