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
- Вспомогательный модуль для определения типа существующей базы данных.