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

11.6. anydbm – универсальный доступ к базам данных DBManydbm – Generic access to DBM-style databases

Примечание

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

anydbm – универсальный интерфейс к разновидностям базы данных DBM: dbhash (требуется bsddb), gdbm или dbm. Если ни один из этих модулей не установлен, используется медленная, но простая реализация в модуле dumbdbm.

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

Открывает файл базы данных filename и возвращает соответствующий объект.

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

Необязательный аргумент flag должен быть одним из следующих значений:

Значение

Значение

'r'

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

'w'

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

'c'

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

'n'

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

Если не указано, значение по умолчанию – 'r'.

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

exception anydbm.error

Кортеж, содержащий исключения, которые могут быть возбуждены каждым из поддерживаемых модулей, причём уникальное исключение с именем anydbm.error является первым элементом – последнее используется, когда возбуждается anydbm.error.

Объект, возвращаемый open(), поддерживает большую часть функциональности словарей; можно сохранять, извлекать и удалять ключи и соответствующие им значения, а также доступны методы has_key() и keys(). Ключи и значения всегда должны быть строками.

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

import anydbm

# Открыть базу данных, создав её при необходимости.
db = anydbm.open('cache', 'c')

# Записать несколько значений.
db['www.python.org'] = 'Python Website'
db['www.cnn.com'] = 'Cable News Network'

# Перебор содержимого.  Другие методы словаря
# такие как .keys(), .values() также работают.
for k, v in db.iteritems():
    print k, '\t', v

# Сохранение нестрокового ключа или значения вызовет исключение (скорее всего,
# TypeError).
db['www.yahoo.com'] = 4

# Закрыть после завершения.
db.close()

В дополнение к методам, похожим на словарные, объекты anydbm предоставляют следующий метод:

anydbm.close()

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

См. также

Модуль dbhash

Интерфейс базы данных db BSD.

Модуль dbm

Стандартный интерфейс базы данных Unix.

Модуль dumbdbm

Переносимая реализация интерфейса dbm.

Модуль gdbm

Интерфейс базы данных GNU, основанный на интерфейсе dbm.

Модуль shelve

Общая объектная персистентность, построенная на основе интерфейса Python dbm.

Модуль whichdb

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