11.9. gdbm – GNU-реализация dbm¶gdbm – 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.