Сообщить об ошибке.

Модуль dbm.gnu в Python

Библиотека GNU gdbm для доступа к базе dbm

Модуль dbm.gnu очень похож на модуль dbm, но для доступа к базе использует библиотеку GNU gdbm, которая предоставляет некоторые дополнительные функции.

Обратите внимание, что форматы файлов, созданные dbm.gnu и dbm.ndbm - несовместимы.

Модуль dbm.gnu предоставляет интерфейс к библиотеке GNU DBM. Объекты dbm.gnu.gdbm ведут себя как отображения (словари), за исключением того, что ключи и значения всегда преобразуются в байтовые строки перед сохранением. При печати объекта gdbm ключи и значения не выводятся, а методы dict.items() и dict.values​​() не поддерживаются.

dbm.gnu.open(filename[, flag[, mode]]):

Функция dbm.gnu.open() откроет базу данных gdbm и вернет объект gdbm. Аргумент filename - это имя файла базы данных.

Необязательный аргумент flag может быть:

ЗначениеСмысл
'r'Открыть существующую базу данных только для чтения (по умолчанию)
'w'Откройте существующую базу данных для чтения и записи
'c'Откройте базу данных для чтения и записи, создавая ее, если ее не существует
'n'Всегда создает новую пустую базу данных, открытую для чтения и записи

Следующие дополнительные символы могут быть добавлены к аргументу flag для управления открытием базы данных:

ЗначениеСмысл
'f'Откройте базу данных в быстром режиме. Запись в базу данных не будет синхронизирована.
's'Синхронизированный режим. Это приведет к немедленной записи изменений в базу данных в файл.
'u'Откройте базу данных в неблокирующем режиме.

Не все флаги действительны для всех версий gdbm. Если указан недопустимый флаг, то возникает исключение.

Необязательный аргумент mode - это режим Unix файла, используемый только тогда, когда необходимо создать базу данных. По умолчанию это восьмеричное число 0o666.

В дополнение к методам, подобным словарю, объекты gdbm имеют следующие методы:

gdbm.firstkey():

Метод gdbm.firstkey() возвращает начальный ключ базы данных.

Можно перебрать каждый ключ в базе данных с помощью этого метода и метода gdbm.nextkey(). Обход упорядочен по внутренним значениям хеш-функции gdbm и не будет отсортирован по ключевым значениям.

gdbm.nextkey(key):

Метод gdbm.nextkey() возвращает ключ, следующий ключ при обходе. Следующий код печатает каждый ключ из базы данных, без необходимости создавать список всех ключей в памяти:

k = db.firstkey()
while k != None:
    print(k)
    k = db.nextkey(k)

gdbm.reorganize():

Если производится много удалений и необходимо уменьшить пространство, используемое файлом gdbm, эта процедура реорганизует базу данных.

Объекты GDBM не сокращают длину файла базы данных, кроме как с помощью gdbm.reorganize(). В противном случае удаленное файловое пространство будет сохранено и повторно использовано при добавлении новых пар (key, value).

gdbm.sync():

Когда база данных была открыта в быстром режиме, то метод gdbm.sync() принудительно записывает все не записанные данные на диск.

gdbm.close():

Метод gdbm.close() закрывает базу данных GDBM.