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

11.6. anydbm – Generic access to DBM-style databases

Примечание

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

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()

См. также

Модуль dbhash
Интерфейс к базе данных BSD db.
Модуль dbm
Стандартный интерфейс базы данных Unix.
Модуль dumbdbm
Переносимая реализация интерфейса dbm.
Модуль gdbm
Интерфейс к базе данных GNU, основанный на интерфейсе dbm.
Модуль shelve
Универсальное сохранение объектов (persistence) на основе интерфейса Python dbm.
Модуль whichdb
Вспомогательный модуль для определения типа существующей базы данных.