Документация Python неофициальный перевод

11.9. gdbm – GNU-реализация dbmgdbm – GNU’s reinterpretation of dbm

Примечание

Модуль gdbm был переименован в dbm.gnu в Python 3. Инструмент 2to3 автоматически адаптирует импорты при преобразовании исходных кодов в Python 3.

Этот модуль во многом похож на модуль dbm, но использует gdbm для предоставления дополнительных возможностей. Обратите внимание, что форматы файлов, созданные с помощью gdbm и dbm, несовместимы.

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

Модуль определяет следующие константу и функции:

exception gdbm.error

Возбуждается при ошибках, специфичных для gdbm, таких как ошибки ввода-вывода. KeyError возбуждается для общих ошибок отображения, например, при указании неверного ключа.

gdbm.open(filename[, flag[, mode]])

Открывает базу данных gdbm и возвращает объект gdbm. Аргумент filename – это имя файла базы данных.

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

Значение

Значение

'r'

Открыть существующую базу данных только для чтения (по умолчанию)

'w'

Открыть существующую базу данных для чтения и записи

'c'

Открыть базу данных для чтения и записи, создав её, если она не существует

'n'

Всегда создавать новую пустую базу данных, открытую для чтения и записи

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

Значение

Значение

'f'

Открыть базу данных в быстром режиме. Записи в базу данных не будут синхронизироваться.

's'

Синхронизированный режим. Это приведёт к тому, что изменения в базу данных будут немедленно записаны в файл.

'u'

Не блокировать базу данных.

Не все флаги допустимы для всех версий gdbm. Константа модуля open_flags – это строка поддерживаемых символов флагов. Исключение error возникает, если указан недопустимый флаг.

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

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

gdbm.firstkey()

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

gdbm.nextkey(key)

Возвращает ключ, следующий за key при обходе. Следующий код выводит все ключи базы данных db, не создавая в памяти список, содержащий их все:

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

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

gdbm.sync()

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

gdbm.close()

Закрыть базу данных gdbm.

См. также

Модуль anydbm

Общий интерфейс для баз данных стиля dbm.

Модуль whichdb

Вспомогательный модуль для определения типа существующей базы данных.